2017-10-09 58 views
2

我tensorflow創建模型和最後幾行之一,它是tensorflow - 指定名稱以優化爲將來恢復

import tensorflow as tf 
... 
train_step = tf.train.AdagradOptimizer(LEARNING_RATE).minimize(some_loss_function) 

我不知道如果我可以給這個張/操作的名字,這樣我可以在保存到磁盤後按名稱恢復它?

或者,如果我不能給它一個名字,我怎麼能找到它的 以下命令的輸出:

tf.get_default_graph().get_operations() 

回答

2

據​​是的,是的,你可以。

train_step = tf.train.AdamOptimizer().minimize(loss, name='my_training_step') 

可以再用以後恢復OP:

saver = tf.train.Saver(...) 
sess = tf.Session() 
saver.restore(sess, 'path/to/model') 
train_op = sess.graph.get_operation_by_name('my_training_step') 

您也可以存儲在一個集合在訓練操作和importing the meta graph恢復。添加到收藏和保存的樣子:

saver = tf.train.Saver(...) 
tf.add_to_collection('train_step', train_step) 
# ... 
with tf.Session() as sess: 
    # ... 
    sess.save(sess, ...) 

和恢復的樣子:

new_saver = tf.train.import_meta_graph('path/to/metagraph') 
new_saver.restore(sess, 'path/to/model') 
train_op = tf.get_collection('train_step')[0] # restore the op 
+0

非常感謝你對你的反應。只是出於好奇。是否可以在'tf.get_default_graph()。get_operations()'的輸出中找到這個操作,以防在保存過程中我沒有給它命名? – user1700890

+1

我認爲它應該在那裏,但名稱可能是一個痛苦的解析。我不確定在這種情況下會是什麼樣子,對不起。 – Engineero

+1

哦,你可以通過檢查tensorboard中的圖來找到名字,前提是你用'tf.train.Saver'在某個點保存了圖。 – Engineero