2017-08-10 54 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(...) 

如果你想恢復更多的變量,你只需要擴展字典。

相關問題