2017-10-09 56 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