【问题标题】:tensorflow - assign name to optimizer for future restorationtensorflow - 为优化器分配名称以供将来恢复
【发布时间】:2018-03-21 02:08:35
【问题描述】:

我在 tensorflow 中创建模型,其中最后一行是

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

我想知道我是否可以给这个张量/操作起一个名字,以便我可以在保存到磁盘后按名称恢复它?

或者,如果我不能给它一个名字,我怎么能在输出中找到它 以下命令:

tf.get_default_graph().get_operations()

【问题讨论】:

    标签: tensorflow save restore


    【解决方案1】:

    根据the docs for tf.train.Optimizer 是的,是的,你可以。

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

    然后您可以稍后恢复操作:

    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
    

    【讨论】:

    • 非常感谢您的回复。只是出于好奇。如果我在保存过程中没有给它命名,是否可以在tf.get_default_graph().get_operations() 的输出中找到这个操作?
    • 我认为它应该在那里,但名称可能很难解析。我不确定在这种情况下会是什么样子,抱歉。
    • 哦,如果您在某个时刻使用tf.train.Saver 保存了图形,您也许可以通过检查 tensorboard 中的图形来找到名称。
    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 2018-05-24
    • 2023-03-04
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    相关资源
    最近更新 更多