2017-08-10 55 views
0

我在Tensorflow中有多种体系结构。其中一些共享某些部分的设计。如何使用不同名称恢复重量但形状相同的Tensorflow?

我想训练其中一个网络,并在另一个网络中使用相似图层的训练权重。

在这个时候,我能够保存我想要的权重,并将它们重新加载到一个架构中,这些架构的变量命名约定完全相似。

但是,如果权重在两个网络中具有不同的名称,则无法恢复。我对第一网络命名约定:

  • selector_network/C2W/VAR1
第二网络中

我有这样的:

  • joint_network/C2W/VAR1

除此之外,变量在形状上是相似的。是否有可能在重新加载时更改名称或告诉Tensorflow在哪里适合这些变量?

编辑:我发现这个脚本@batzner,允许重命名Tensorflow检查点的变量:tensorflow_rename_variables

它不工作。我得到以下错误:

ValueError: Couldn't find 'checkpoint' file or checkpoints in given directory ./joint_pos_tagger_lemmatizer/fi/ 

回答

1

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(...) 

如果你想恢复更多的变量,你只需要扩展字典。

相关问题