【问题标题】:Restoring the tensorflow model恢复张量流模型
【发布时间】:2018-05-03 14:25:37
【问题描述】:

我想在训练后恢复一个 tensorflow 模型。我知道我可以使用tf.train.Saver,但问题在于恢复,因为我对get_tensor_by_name 的名称感到困惑。有谁能够帮我? 这是我的图表:

x_hat = tf.placeholder(tf.float32, shape=[None, dim_img], name='input_img')
x = tf.placeholder(tf.float32, shape=[None, dim_img], name='target_img')

# dropout
keep_prob = tf.placeholder(tf.float32, name='keep_prob')

# input for PMLR
z_in = tf.placeholder(tf.float32, shape=[None, dim_z], name='latent_variable')

# network architecture
y, z, loss, neg_marginal_likelihood, KL_divergence = vae.autoencoder(x_hat, x, dim_img, dim_z, n_hidden,
                                                                                keep_prob)

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    当您保存模型时,您会保存 2 件事:1) 元图,它是图的表示形式(您定义的所有 TF 符号;2)包含实际变量值的检查点(它们是按名称保存和恢复)。

    当您恢复时,您可以恢复其中一个或两个组件。您所描述的是恢复元图和检查点数据。在这种情况下,您需要按名称查找您感兴趣的各种操作和张量,这可能会造成混淆(尤其是如果您没有很好地命名变量,您应该始终这样做)。

    # In this method you import the meta graph then restore
    saver = tf.train.import_meta_graph('my-save-dir/my-model-10000.meta')
    saver.restore(sess, 'my-save-dir/my-model-10000')
    

    恢复的另一个选项(我更喜欢 mysefl)是根本不加载元图。相反,只需重新运行您最初用于创建图表的相同代码(如果您做得很好,这将全部组织在一个地方)。然后你只恢复检查点。这种方法的好处是您可以轻松地保留对您需要的所有操作的引用(例如成本、train_op、占位符等)。

    # This method only performs the restor operation 
    # assuming the graph is already constructure
    saver.restore(sess, 'my-save-dir/my-model-10000')
    

    【讨论】:

    • 非常感谢。您能否详细解释一下第二种方法?假设我恢复了检查点。如何在我恢复的预训练模型上测试我的新数据?
    • 您通过调用像 build_graph() 这样的函数来构建图形,该函数创建了所有 tensorflow 对象。其中一个对象可能称为logits,这是输出的典型名称,另一个可能是accuracy,用于计算批次的准确性。要评估这两个张量,您只需调用sess.run([logits, accuracy], feed_dict={X:your_data, y:your_labels}),假设您还定义了占位符Xy。它与训练相同,只是您不是在评估 train_op,而是在评估您有兴趣输出的操作。
    • 谢谢。我一般都知道如何评估和运行测试数据的代码。我只是好奇如果您恢复您在第二个选项中提到的预训练模型,这是否会有所不同。我想是一样的。
    • 无论怎么恢复模型都是一样的。
    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多