我在 Tensorflow 中有多种架构。其中一些共享某些部件的设计。
我想训练其中一个网络,并在另一个网络中使用相似层的训练权重。
此时,我可以保存所需的权重,并将它们重新加载到具有完全相同的变量命名约定的架构中。
然而,当两个网络中的权重名称不同时,就无法恢复。我对第一个网络有这样的命名约定:
在第二个网络中我有这个:
除此之外,变量在形状方面相似。是否有可能在重新加载时更改名称或告诉 Tensorflow 在哪里适合这些变量?
EDIT:我从 @batzner 找到了这个脚本,它允许重命名 Tensorflow 检查点的变量:张量流重命名变量.
它不起作用。我收到以下错误:
ValueError: Couldn't find 'checkpoint' file or checkpoints in given directory ./joint_pos_tagger_lemmatizer/fi/
tf.train.Saver有内置支持使用字典var_list
争论。该字典将检查点文件中的对象名称映射到要恢复的变量。
如果你想用“选择器网络”的检查点恢复“联合网络”,你可以这样做:
# var1 is the variable you want ot restore
saver = tf.train.Saver(var_list={'selector_network/c2w/var1': var1})
saver.restore(...)
如果你想恢复更多变量,你只需扩展字典即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)