在数据处理里,常使用DataSet和DataLoader,关于具体使用此处不介绍,对于每一个batch_size里的数据来讲,
一般数据是shuffle=True
,即表示打乱顺序,能够使数据更无规律和更为随机。但是如果对于数据样本不定长的情况或者说分布不均匀的情况下,
要使其定长,做法就是pad到一个固定长度,如果长短分布差距大呢??
比如:
1 | example1: 我有一个小摩托,我从来也不急,骑着我的小摩托,从此把它骑。 |
如果将example2
和example1
pad到一个固定长度,pad太多。(虽然你可以扯进来mask,但是要在model的每一layer都要设置mask,关于mask此处忽略。)
如何在一个batch_size样本里面使数据分布更为接近?
kmean algo for clustering the feature by length.
kmeans等聚类算法就可以辅助解决,以每条数据的长度为依据。
1 |
|
这样使用的话,那么batch_size就木有啥子用处了,有可能一个batch样本量为1,也有可能为设置的上限。
但是转念一想,其实也可以不用如此复杂,直接sorted by length也是可以的嘛,具体解释就忽略了。