0
import tensorflow as tf
saver = tf.train.Saver()
saver.restore(...)
但是saver.restore只有恢復整個圖的選項。我想只恢復那些在特定範圍內的變量。如何從張量流中保存的檢查點恢復特定範圍的變量?
在此先感謝!
import tensorflow as tf
saver = tf.train.Saver()
saver.restore(...)
但是saver.restore只有恢復整個圖的選項。我想只恢復那些在特定範圍內的變量。如何從張量流中保存的檢查點恢復特定範圍的變量?
在此先感謝!
假設您已經在範圍InceptionV1
範圍內有Google的InceptionNet模型,並且您想要加載它,但要重新訓練的範圍InceptionRetrained
的最後一層除外。
假設你已經開始重新訓練的最後一層,你通過saver2.save(session, 'last_layer.ckpt')
創建last_layer.ckpt文件,這裏是如何從檢查點恢復淨。
saver1 = tf.train.Saver(var_list=tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='InceptionV1'))
saver1.restore(session, 'inception_model_from_google.ckpt')
saver2 = tf.train.Saver(var_list=tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='InceptionRetrained'))
saver2.restore(session, 'last_layer.ckpt')
如果你再培訓只剩下最後一層,不要忘記通過調用優化與var_list
參數禁用梯度向上的網絡(節省時間)的傳播。
tf.train.Optimizer(0.0001).minimize(
loss, var_list=tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='Inceptionretrained'))