Tensorflow:保存和恢复模型参数
我是TensorFlow的初学者,目前正在培训CNN 我使用Saver来保存模型使用的参数,但我担心它本身是否会存储模型使用的所有变量,是否足以恢复值以重新运行程序,以便在经过培训的网络上执行分类/测试 让我们看看TensorFlow给出的著名示例MNIST 在这个例子中,我们有一堆卷积块,它们都有权重和偏差变量,这些变量在程序运行时被初始化Tensorflow:保存和恢复模型参数,tensorflow,Tensorflow,我是TensorFlow的初学者,目前正在培训CNN 我使用Saver来保存模型使用的参数,但我担心它本身是否会存储模型使用的所有变量,是否足以恢复值以重新运行程序,以便在经过培训的网络上执行分类/测试 让我们看看TensorFlow给出的著名示例MNIST 在这个例子中,我们有一堆卷积块,它们都有权重和偏差变量,这些变量在程序运行时被初始化 W_conv1 = init_weight([5,5,1,32]) b_conv1 = init_bias([32]) 在处理了几个层之后,我们创建了一
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.restoresess、file_path,以便将权重、偏差等参数恢复回图形?应该是这样吗
for i in range(1000):
...
if i%500 == 0:
saver.save(sess,"model%d.cpkt"%(i))
我目前正在大数据集上进行培训,因此终止和重新启动培训是浪费时间和资源的,因此我请某人在我开始培训之前澄清。如果您只想保存一次最终结果,可以执行以下操作:
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 for prediction或其他程序返回的路径加载模型。您可以在中看到一些示例。如果只想保存最终结果一次,可以执行以下操作:
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 for prediction或其他程序返回的路径加载模型。您可以在中看到一些示例。基于和Sung Kim solution中的解释,我为这个问题编写了一个非常简单的模型。基本上,通过这种方式,您需要从同一个类创建一个对象,并从保护程序中恢复其变量。你可以找到这个解决方案的一个例子。基于和Sung Kim solution中的解释,我为这个问题编写了一个非常简单的模型。基本上,通过这种方式,您需要从同一个类创建一个对象,并从保护程序中恢复其变量。您可以找到此解决方案的一个示例。您的问题有点不清楚。若要注释saver.save代码,并将其替换为saver.restoresess,请选择不希望存储训练值并通过还原从以前的训练中重置的文件路径?因此,终止和重新开始培训是浪费时间。这意味着你想在完成所有训练后保存一次模型?@金成:后一个问题的答案是肯定的。我的目的不是用存储的值重新开始训练,而是在完成训练后简单地一次性保存模型。因为在Matlab中,这非常简单,事实上,这是我第一次用TensorFlow编程Python,所以我不知道是否有其他优雅的方法来保存参数。你问的有点不清楚。若要注释saver.save代码,并将其替换为saver.restoresess,请选择不希望存储训练值并通过还原从以前的训练中重置的文件路径?因此,终止和重新开始培训是浪费时间。这意味着你想在完成所有训练后保存一次模型?@金成:后一个问题的答案是肯定的。我的目的不是用存储的值重新开始训练,而是在完成训练后简单地一次性保存模型。因为在Matlab中,这非常简单,事实上,这是我第一次用TensorFlow编写Python,所以我不知道是否还有其他优雅的方法来保存参数。