Open pymLovelyq opened 3 years ago
参考代码 models/data_loader.py 的 352行至369行,出现这种情况的原因可能是:某一个 example 的 token 总数目超过了 batch size(训练时默认是 2000,测试时默认是 20000),就会将其丢弃,否则可能会 OOM。
另一种可能的原因是,preprocess 时,对话的句子数目小于参数-min_turns 的设置值,就会将其丢弃。但此参数默认是1,只要对话有至少一句话,就会将其保留,除非数据有噪声导致此 example 为空。
preprocess 时,对话的句子数目小于参数-min_turns 的设置值,就会将其丢弃,是不是也说明如果max_turns大于默认值100,也会丢弃?
max_turns 大于100,后续句子会被截断。
尝试了修改batchsize,还是原样,650个测试样本,总是得到645个结果输出。是不是跟模型初始训练有关,是不是初始训练时候就要正确的参数,不然仅仅靠测试时修改参数也没有影响。
测试和训练使用的数据格式相同,使用了同样的预处理和数据载入过程。如果训练没有问题,测试也应该没有问题。
确定ali.test.0.bert.pt有650个样例,应该是载入后被丢弃。修改了载入后处理数据的代码,发现并不奏效,不知道是哪一部分的代码强制丢弃了。。。
建议先找出被丢弃的具体样例,然后将其整合成一个小测试集(由被丢弃的样例组成)。再输入模型进行单步调试。
确定ali.test.0.bert.pt有650个样例,应该是载入后被丢弃。修改了载入后处理数据的代码,发现并不奏效,不知道是哪一部分的代码强制丢弃了。。。
请问您最后解决了吗?
loading weights file bert/chinese_bert/pytorch_model.bin [2021-06-11 21:12:15,450 INFO] loading Word2VecKeyedVectors object from pretrain_emb/word2vec [2021-06-11 21:12:15,493 INFO] setting ignored attribute vectors_norm to None [2021-06-11 21:12:15,493 INFO] loaded pretrain_emb/word2vec [2021-06-11 21:12:20,943 INFO] Loading test dataset from bert_data/ali.test.0.bert.pt, number of examples: 650
结果只有645个输出,然后对比了下,发现是样本中不是存在中间某几个测试样本被抛弃了?还是没有生成? 个人初步怀疑是对话太长了,导致整个被截断了,然后没有生成? 但是改了几个参数,发现max设置成很大,依然只有645个样本输出,请问博主知道是什么问题吗?或者有什么思路?谢谢!!!
(测试另外一个数据集,也出现类似的情况,少了10条测试样本的结果数据)