longlongman / CasRel-pytorch-reimplement

Pytorch reimplement of the paper "A Novel Cascade Binary Tagging Framework for Relational Triple Extraction" ACL2020. The original code is written in keras.
197 stars 52 forks source link

ValueError: not enough values to unpack (expected 11, got 0) #16

Closed 2019hong closed 3 years ago

2019hong commented 3 years ago

您好!~打扰您了 我是NLP的初学者,很抱歉打扰您。在复现学习您的代码的过程中出现了ValueError: not enough values to unpack (expected 11, got 0)这个错误, image 我尝试输出了batch,是成功获取到值了的, image 在这个问题上困惑好几天了,我除了之前因为gdk的错误,在data_loader.py的36行左右在open函数加了encoding='UTF-8',基本没做过改动。 image 如果大佬有时间的话 如果能给我些建议和指导,万分感谢!!!!!!!!!

longlongman commented 3 years ago

我猜你应该还把batch_size的大小减小了?在batch_size比较小的情况下,有一定几率batch会是None,自然zip(*batch)就没有足够的值来unpack了,至于为什么batch会是None,原因是CMEDDataset类的getitem方法,由于设置了最大文本长度,当三元组的头实体超过最大文本长度且该句子只有唯一一个头实体时,其实这个样本就没用了,getitem会返回None,而在cmed_collate_fn函数里,我把返回的None都给过滤掉了,因此如果你的batch_size太小,就有可能getitem返回的全是None,进一步就被全部过滤掉了,自然unpack不了东西了

2019hong commented 3 years ago

@longlongman 谢谢您!!我确实把batch_size调小了,您不说我都忘了,我电脑跑不起6,我换台电脑感受下,原来batch_size还会有这样的影响的可能,感谢您给我的讲解!学到了!谢谢您。我再仔细学习下您的代码~感谢!!!