2016-10-21 73 views
0

我在理解tf.train的正確使用方面遇到了很多麻煩.Saver如何在多個模型中使用tensorflow保護程序?

我有一個會話,我創建了幾個不同的獨立網絡模型。所有型號都經過培訓,我保存了性能最佳的網絡供以後使用。

然而,當我嘗試在稍後的時間恢復模式,我得到這似乎表明,一些變量可能是沒有得到保存和恢復的錯誤:

NotFoundError: Tensor name "Network_8/train/beta2_power" not found in checkpoint files networks/network_0.ckpt 

出於某種原因,當我嘗試並加載Network_0的變量我被告知我需要Network_8的變量信息。

確保我只保存/恢復多網絡會話中的正確變量的最佳方法是什麼?

看來我的問題的一部分是,雖然我爲每個網絡創建了一個我想爲每個網絡保存(權重和偏見)的dict對象,但是當我設置優化器(如AdamOptimizer tensorflow)時,會自動創建額外的變量需要初始化。如果您使用tf.train.Saver保存所有變量並且只有一個網絡,這很好,但是我正在訓練多個網絡並且只保存最佳結果。我不知道如何指定自動添加到我的字典進行保存的變量。

+0

你可以發佈你如何保存和恢復,否則它基本上只是猜測你是什麼問題。 – Steven

回答

1

我的解決方案是在原始模型和新模型(即Network_0和Network_8)中都創建一個具有相同張量名稱的part_saver,它只恢復所需的變量。

part_saver = tf.train.Saver({"W":w,"b":b,...}) 

在還原部分模型之前初始化Network_8中的所有變量。

相關問題