【问题标题】:Restoring a TensorFlow Model Without Explicitly Saving Session Variables在不显式保存会话变量的情况下恢复 TensorFlow 模型
【发布时间】:2018-08-14 05:37:56
【问题描述】:

我已经查看了许多有关保存经过训练的神经网络的问题,包括 Tensorflow: how to save/restore a model?https://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/,但它们都没有在不明确保存特定变量的情况下保存模型,就像我的情况一样。这是我的情况:

# In session "sesh" saver = tf.train.Saver() saver.save(sesh,os.getcwd(),latest_filename= 'RNN_plasma.ckpt')

现在,我退出会话并想要恢复我刚刚保存的模型。我怎样才能做到这一点?尝试时:

import tensorflow as tf

with tf.Session() as session1:
    #First let's load meta graph and restore weights
    saver = tf.train.import_meta_graph('RNN_plasma.ckpt')#error-line
    saver.restore(session1,tf.train.latest_checkpoint('./'))

,tf.train.import_meta_graph() 调用返回:

raise IOError("Cannot parse file %s: %s." % (filename, str(e)))
IOError: Cannot parse file RNN_plasma.ckpt: 1:1 : Message type "tensorflow.MetaGraphDef" has no field named "model_checkpoint_path"..

谁能提供关于这里发生了什么以及如何解决它的任何见解?

(我的 TensorFlow 版本没有附带 tf.python.saved_model.simple_save()。(我有 git_version 1.5.0))

【问题讨论】:

  • 由于您正在导入 meta_graph,请尝试将元文件名称命名为 RNN_plasma.ckpt.meta,这将在您调用 saver.save 方法时创建

标签: python tensorflow machine-learning


【解决方案1】:

保存:

saver = tf.train.Saver()
saver.save(sess,"/tmp/network")

恢复:

sess =  tf.Session() 
saver = tf.train.import_meta_graph('/tmp/network.meta')
saver.restore(sess,tf.train.latest_checkpoint('/tmp'))
graph = tf.get_default_graph()

【讨论】:

    【解决方案2】:

    您保存了一个简单的检查点,但随后您尝试将其加载为元图。这行不通。 TensorFlow 网站上有一篇文章解释了这些差异

    https://www.tensorflow.org/mobile/prepare_models#what_is_up_with_all_the_different_saved_file_formats

    必须有一个以.meta结尾的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2018-11-19
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      相关资源
      最近更新 更多