daniellibin/gaiic2021_track3_querySim

预训练排序的作用

Closed this issue · 2 comments

#sortBsNum:原序列按多少个bs块为单位排序,可用来增强随机性 #比如如果每次打乱后都全体一起排序,那每次都是一样的 def blockShuffle(data:list,bs:int,sortBsNum,key): random.shuffle(data)#先打乱,random.shuffle(data)用于将一个列表中的元素打乱 tail=len(data)%bs#计算碎片长度 tail=[] if tail==0 else data[-tail:] data=data[:len(data)-len(tail)] assert len(data)%bs==0#剩下的一定能被bs整除 #sortBsNum = None sortBsNum=len(data)//bs if sortBsNum is None else sortBsNum#为None就是整体排序 data=splitList(data,sortBsNum*bs) data=[sorted(i,key=key,reverse=True) for i in data]#每个大块进行降排序 data=unionList(data) data=splitList(data,bs)#最后,按bs分块 #random.shuffle(data)#块间打乱 data=unionList(data)+tail return data
想知道如果这块排序有作用吗?整个一起打乱会影响预训练结果吗?

采用动态长度,将长度差不多的数据放在同一batch训练,加快训练速度。效果和random差不多

采用动态长度,将长度差不多的数据放在同一batch训练,加快训练速度。效果和random差不多

好的,感谢大佬