OneRel_chinese
OneRel_chinese copied to clipboard
ValueError: not enough values to unpack (expected 7, got 0)
data_loader.py文件中 token_ids, masks, loss_masks, text_len, triple_matrix, triples, tokens = zip(*batch) ValueError: not enough values to unpack (expected 7, got 0) batch是个空列表😵
打印下加载数据是否正确
我也遇到这样的问题,你解决了吗
你好,我也遇到了相同的问题。 我尝试了以下解决方法但是还是没有头绪 1)改变max_len=750 (虽然按照data——loader 不需要改变max——len 2)print out L105 可以打印正常的tensor 但是我的数据可以跑几个epoch 之后才出现expected 7, got 0的error。我怀疑是某段text有问题。所以我单独取出tokenizer,把所有的text,triples 给tokenize 了。没有报错。 但按照data——loader 里的内容,我理解只要能成功tokenize就一定能生成7 个变量。 我不清楚哪里出了问题,希望能得到您的建议。
你好,我也是跑完五个循环后,eval mode……,就会报上面的错,要改max_len改成多少啊
@32209056 max_len 应该要调到比数据里最长的text大一点。 但是按照data loader里这行
def __getitem__(self, idx):
ins_json_data = self.json_data[idx]
text = ins_json_data['text']
text = ' '.join(text.split()[:self.config.max_len])
tokens = self.tokenizer.tokenize(text)
if len(tokens) > self.config.bert_max_len:
tokens = tokens[: self.config.bert_max_len]
text_len = len(tokens)
但我觉得,如果max——len 小于最长字符的话,应该只是丢失了部分数据,而不是跑不出来?
@32209056 max_len 应该要调到比数据里最长的text大一点。 但是按照data loader里这行
def __getitem__(self, idx): ins_json_data = self.json_data[idx] text = ins_json_data['text'] text = ' '.join(text.split()[:self.config.max_len]) tokens = self.tokenizer.tokenize(text) if len(tokens) > self.config.bert_max_len: tokens = tokens[: self.config.bert_max_len] text_len = len(tokens)
但我觉得,如果max——len 小于最长字符的话,应该只是丢失了部分数据,而不是跑不出来?
你好,这个问题我觉得是你的数据问题,我一开始也有这个问题,是因为我的数据里gold标签里的实体不在text中所以报错了,我把有问题的数据改了后就好了
你好,我也遇到了相同的问题。 我尝试了以下解决方法但是还是没有头绪 1)改变max_len=750 (虽然按照data——loader 不需要改变max——len 2)print out L105 可以打印正常的tensor 但是我的数据可以跑几个epoch 之后才出现expected 7, got 0的error。我怀疑是某段text有问题。所以我单独取出tokenizer,把所有的text,triples 给tokenize 了。没有报错。 但按照data——loader 里的内容,我理解只要能成功tokenize就一定能生成7 个变量。 我不清楚哪里出了问题,希望能得到您的建议。
你好,这个问题我觉得是你的数据问题,我一开始也有这个问题,是因为我的数据里gold标签里的实体不在text中所以报错了,我把有问题的数据改了后就好了
@32209056 max_len 应该要调到比数据里最长的text大一点。 但是按照data loader里这行
def __getitem__(self, idx): ins_json_data = self.json_data[idx] text = ins_json_data['text'] text = ' '.join(text.split()[:self.config.max_len]) tokens = self.tokenizer.tokenize(text) if len(tokens) > self.config.bert_max_len: tokens = tokens[: self.config.bert_max_len] text_len = len(tokens)
但我觉得,如果max——len 小于最长字符的话,应该只是丢失了部分数据,而不是跑不出来?
你好,这个问题我觉得是你的数据问题,我一开始也有这个问题,是因为我的数据里gold标签里的实体不在text中所以报错了,我把有问题的数据改了后就好了
谢谢,确实形成的dev_json有问题,重新下载一下代码,作者有更新,能跑出来