所以我基本上在我的项目https://github.com/Kyubyong/transformer中使用此转换器实现。 它原本是为德语到英语翻译而设计的,但是效果很好,我修改了python处理脚本,以便为我要翻译的语言创建词汇文件。这似乎工作正常。
但是在培训方面,我会遇到以下错误:
InvalidArgumentError(请参阅上面的回溯):从中还原 检查点失败。这很可能是由于两者之间的不匹配 当前图和来自检查点的图。请确保 您尚未更改基于检查点的预期图形。 原始错误:
分配需要两个张量的形状匹配。 lhs shape = [9796,512] rhs shape = [9786,512] [[{{node save / Assign_412}} = 分配[T = DT_FLOAT,_class = [“ loc:@ encoder / enc_embed / lookup_table”], use_locking = true,validate_shape = true, _device =“ / job:localhost / replica:0 / task:0 / device:CPU:0”](编码器/ enc_embed / lookup_table / Adam_1, save / RestoreV2:412)]]
现在我不知道为什么会出现上述错误。我还恢复了原始代码,将德语翻译成英语,现在在工作之前,我得到了相同的错误(除了lhs和rhs张量形状当然不同)!
关于为什么会发生这种情况的任何想法?
预先感谢
编辑:这是这里有问题的特定文件,运行时的train.py:https://github.com/Kyubyong/transformer/blob/master/train.py 除了为de和en加载的词汇库是不同的以外,没有任何修改(事实上,它们是词汇库文件,带有单个字母作为单词)。但是,正如我提到的,即使回到以前的工作示例中,我也会在使用不同的lhs和rhs尺寸时遇到相同的错误。
答案 0 :(得分:1)
我遇到了类似的错误,我的情况似乎是以前失败的作业的输出仍保留在输出目录中,并且在保存/恢复新作业的检查点时存在一些不兼容性,所以我只是清理了输出目录,然后新作业正常工作。
答案 1 :(得分:0)
大量数字几乎可以肯定是您的词汇量。初始矩阵的大小为[vocab_size,hidden_dim]。因此,通过更改唱词的大小,您就可以破坏事物。
大概解决方案是确保清除所有检查点,以便仅查看使用所需词汇量训练的模型。
答案 2 :(得分:0)
导出/保存模型时,我遇到了同样的问题。我指的是该URL中提供的示例:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/exporting_models.md
如果您遇到上述问题,必须确保正确的三件事:
清理模型目录并提取新模型
确保使用正确的pipeline-config文件对及其对应的TF模型。
使用正确的模型检查点。参见以下示例:
我将TRAINED_CKPT_PREFIX值更新为模型的保存点,并且对我有效(请参见以下示例):
TRAINED_CKPT_PREFIX=./data/model.ckpt-139
在您的情况下,请使用您的保存点号139
以前,我只是在使用./data/model.ckpt
而不起作用。