HuiResearch/tfbert

加载模型问题

Opened this issue · 8 comments

NER任务加载模型进行测试比直接训练之后的测试降了五个点。
加载完模型之后不进行初始化会报错,请问是否是部分参数未加载导致的。

NER任务加载模型进行测试比直接训练之后的测试降了五个点。
加载完模型之后不进行初始化会报错,请问是否是部分参数未加载导致的。

您好,我已经修改代码的使用逻辑,已经重新测试通过了,第二次加载模型可直接将保存的模型地址传入model_dir即可。一开始的运行逻辑是第二次调用预测的话加载的是output_dir内的权重,可能和您的使用 方式不太一致。

可能不是这个问题,因为我查看了你的代码逻辑,在第二次调用预测的时候我加载的是output_dir内的权重,不过仍然和训练过程后的推理下降了五个点的准确率。我进行了多次实验结果都是下降接近五个点,不过查看你的代码逻辑并没有发现有什么不同。训练过程中同时指定了dotrain和dopre,在预测时只指定了dopre。
同时我发现CRF对模型的召回率和准确率几乎没什么提高。
目前还在检查你的代码,是不是在加载过程中有某些参数没被初始化或者存在某种bug,这个现象目前还没得到什么解释,不清楚这五个点的损失来自哪里。

数据集是一份德语的数据集 我在其中添加了一定的预处理并保证预处理是正确的。

注意到在训练后推理过程中将德语置换成了英语,您的代码中是否有那部分做了这样的操作呢

注意到在训练后推理过程中将德语置换成了英语,您的代码中是否有那部分做了这样的操作呢

这个应该没有吧,如果有这个情况,应该是bert分词器切分的问题了,是不是词典用的英文词典呢?我一直用中文数据集测试,还没接触过德语

词典用的mbert的多语种词典。奇怪的是我二次推理的时候德语处理都是正常的,第一次处理预测出来的德语都被置换成英语了

那你的数据集是方便分享吗?我晚点用来测试下

很抱歉数据集是内部数据集无法分享 我现在解决了这个问题 之前为了查看模型效果我将测试数据集既当作验证集又当作测试集,目前我只用作测试集时可以解决上述情况,但是目前没定位到具体原因。