649453932 / Chinese-Text-Classification-Pytorch

中文文本分类,TextCNN,TextRNN,FastText,TextRCNN,BiLSTM_Attention,DPCNN,Transformer,基于pytorch,开箱即用。
MIT License
5.25k stars 1.22k forks source link

关于DatasetIterater类 #62

Open pppihf opened 3 years ago

pppihf commented 3 years ago
if len(batches) % self.n_batches != 0:
    self.residue = True

当batches的长度正好是batch个数的倍数,但又不是batch_size的倍数的时候,上面的代码就不起作用了。 比如当len(batches)=3870, batch_size=128的时候,self.n_batches=30,分好的数据只有30*128=3840条。 经过尝试,可以做如下修改:

if self.n_batches != 0:
    if len(batches) % self.batch_size != 0:
        self.residue = True
else:
    if len(batches) - self.batch_size != 0:
        self.residue = True

这样还考虑到了总样本数比batch_size小的情况,谢谢~

TianlinZhang668 commented 3 years ago

同意上述!

guo11327 commented 3 years ago

建议做如下修改

if self.n_batches==0 or len(batches) != self.n_batches * batch_size:
     self.residue = True
lmsitech commented 3 years ago

build_iterator是不是没有在每个epoch训练过程中打乱训练数据