恢复TensorFlow模型而不显式保存会话变量

时间:2018-08-14 05:37:57

标签: python tensorflow machine-learning

我已经看过许多有关保存训练有素的神经网络的问题,包括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))

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

保存:

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()