我是TensorFlow的初学者,目前正在培训CNN。
我正在使用 Saver 来保存模型使用的参数,但我担心这是否会存储模型使用的所有变量,并且足以将值恢复为 重新运行 程序,以便在训练有素的网络上执行分类/测试。
让我们看一下TensorFlow给出的着名的MNIST示例。
在这个例子中,我们有一堆Convolutional块,所有这些块都有权重,偏差变量在程序运行时被初始化。
W_conv1 = init_weight([5,5,1,32])
b_conv1 = init_bias([32])
处理完多个图层后,我们创建一个会话,并初始化添加到图表中的所有变量。
sess = tf.Session()
sess.run(tf.initialize_all_variables())
saver = tf.train.Saver()
在这里,是否有可能对saver.save代码进行注释,并在训练后用saver.restore(sess,file_path)替换它,以便将权重,偏差等参数恢复回图形?这是怎么回事?
for i in range(1000):
...
if i%500 == 0:
saver.save(sess,"model%d.cpkt"%(i))
我目前正在接受大型数据集培训,因此终止并重新启动培训是浪费时间和资源,因此我请求有人在开始培训之前澄清。
答案 0 :(得分:4)
如果您只想保存最终结果一次,可以执行以下操作:
with tf.Session() as sess:
for i in range(1000):
...
path = saver.save(sess, "model.ckpt") # out of the loop
print "Saved:", path
在其他程序中,您可以使用saver.save返回的路径加载模型以进行预测。您可以在https://github.com/sugyan/tensorflow-mnist看到一些示例。
答案 1 :(得分:1)