Python 3.x 在会话关闭时启动模型-Tensorflow
我建立了一个具有两个隐藏层的神经网络。启动会话时,我通过以下方式保存会话:Python 3.x 在会话关闭时启动模型-Tensorflow,python-3.x,tensorflow,neural-network,save,Python 3.x,Tensorflow,Neural Network,Save,我建立了一个具有两个隐藏层的神经网络。启动会话时,我通过以下方式保存会话: saver.save(sess, "model.ckpt") 如果我仍在同一会话中并启动此代码: restorer=tf.train.Saver() with tf.Session() as sess: restorer.restore(sess,"./prova") new_graph = tf.train.import_meta_graph('prova.meta') new_graph.
saver.save(sess, "model.ckpt")
如果我仍在同一会话中并启动此代码:
restorer=tf.train.Saver()
with tf.Session() as sess:
restorer.restore(sess,"./prova")
new_graph = tf.train.import_meta_graph('prova.meta')
new_graph.restore(sess, 'prova.ckpt')
feed={
pred1.inputs:test_data,
pred1.is_training:False
}
test_predict=sess.run(pred1.predicted,feed_dict=feed)
我可以启动模型进行测试
问题是:有一种方法可以在会话结束时启动模型?特别是,我将训练结果保存在.ckpt中,我可以在另一时刻重新启动模型?您不能在
tf.Session
之外运行模型。引述自:
会话对象封装了执行操作对象和计算张量对象的环境
但是,您可以轻松地多次打开和关闭会话,使用现有图形或加载以前保存的图形,并在新会话中使用它。这里有一个稍加修改的:
在这两个会话之间,您不能评估
v1
和v2
,但您可以在启动新会话后立即进行评估。您不能在tf.session
之外运行模型。引述自:
会话对象封装了执行操作对象和计算张量对象的环境
但是,您可以轻松地多次打开和关闭会话,使用现有图形或加载以前保存的图形,并在新会话中使用它。这里有一个稍加修改的:
在这两个会话之间,您不能评估
v1
和v2
,但您可以在开始新会话后立即进行评估。为什么不想在测试时间内开始另一个会话?此时,使用火车或测试集开始新会话也是一样的。我想了解的是,是否有可能在ckpt文件中用salved中的日期启动新会话;如果可能的话,我们如何做到这一点。感谢您提供了代码段,在其中您可以在新会话中恢复模型。那里没有训练。这个代码有什么问题?培训是在之前进行的。我的问题是:如果我启动session.close(),可能会重新启动模型?为什么不想在测试时启动另一个会话?此时,使用train或test set启动新会话也是一样的。我想了解的是,是否有可能在ckpt文件中用salved中的日期启动新会话;如果可能的话,我们如何做到这一点。感谢您提供了代码段,在其中您可以在新会话中恢复模型。那里没有训练。这个代码有什么问题?培训是在之前进行的。我的问题是:如果启动session.close(),是否可以重新启动模型?
import tensorflow as tf
v1 = tf.get_variable("v1", shape=[3], initializer = tf.zeros_initializer)
v2 = tf.get_variable("v2", shape=[5], initializer = tf.zeros_initializer)
inc_v1 = v1.assign(v1+1)
dec_v2 = v2.assign(v2-1)
init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
inc_v1.op.run()
dec_v2.op.run()
save_path = saver.save(sess, "/tmp/model.ckpt")
print("Model saved in file: %s" % save_path)
with tf.Session() as sess:
saver.restore(sess, "/tmp/model.ckpt")
print("Model restored.")
print("v1 : %s" % v1.eval())
print("v2 : %s" % v2.eval())