0

我訓練在Tensorflow繼link實施FCN模型,並保存完整的模型作爲檢查點,現在我想用保存的模型(前的培訓,)針對不同的問題預先訓練模式。 我試圖在節電器指定權重,以恢復從檢查點模型:Tensorflow如何修改保存爲檢查點

saver = tf.train.Saver({"weights" : [w1_1,w1_2,w2_1,w2_2,w3_1,w3_2,w3_3,w3_4, w4_1, w4_2, w4_3, w4_4,w5_1,w5_2,w5_3,w6,w7]}) 

我得到的權重爲:

w1_1=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,scope='inference/conv1_1_w') 

等等.... 我不是能夠成功恢復它(直到特定層)。 Tensorflow版本:0.12r

+0

能否請你分享,你所看到的錯誤?據我所知,「tf.train.Saver」的第一個參數的類型並不完全正確:而不是將一個鍵映射到變量列表的字典,它將期望字典將鍵映射到單個變量。 – mrry

+0

@ mrry你是完全正確的,但我從列表中獲得個人權重,你能詳細解釋你的觀點嗎? –

回答

0

要麼你可以調用隨後sess.run(init)init = tf.initialize_variables([list_of_vars])這將重新初始化這些變量爲您,或者您也可以從那裏要凍結權,但保留不同名稱的點重新創建具有相同的結構圖爲變量。此外,如果你只想訓練某些變量,你可以只將這些變量傳遞給優化器。 tf.train.AdamOptimizer(learning_rate).minimize(loss,var_list = [wi, wj, ....])

+0

我需要恢復和初始化偏見嗎? –

+0

是的,不難看出,如果您需要,它們是您決定凍結並重新初始化它們的層所需要的。 – rajat

+0

順便說一句,你只重新規劃你需要重新訓練的變量,其他人可以直接使用 – rajat