【问题标题】:TensorFlow: remember weigth of previous epochsTensorFlow:记住以前时代的权重
【发布时间】:2017-05-11 18:24:22
【问题描述】:
我正在试验 TensorFlow。我刚刚发布了一个question 关于它面临的问题。但是,我还有一个可能更具理论性但具有实际后果的问题。
在训练模型时,我发现准确度可能会有所不同。因此,最后一个 epoch 可能没有显示出最佳精度。例如,在 epoch N I 可能有 85% 的准确度,而在最后一个 epoch 的准确度是 65%。我想使用 N 时期的权重进行预测。
我想知道是否有一种方法可以最准确地记住时代的权重值以供以后使用?
第一个也是最简单的方法是:
- 运行 N 个 epochs
- 记住最佳精度
- 重新开始训练,直到我们达到一个与第 2 步中存储的精度相同的时期。
- 使用当前权重进行预测
还有更好的吗?
【问题讨论】:
标签:
python
machine-learning
tensorflow
neural-network
【解决方案1】:
是的!您需要在培训过程中创建saver and save your session periodically。伪代码实现如下:
model = my_model()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
for epoch in range(NUM_EPOCHS):
for batch in range(NUM_BATCHES):
# ... train your model ...
if batch % VALIDATION_FREQUENCY == 0:
# Periodically test against a validation set.
error = sess.run(model.error, feed_dict=valid_dict)
if error < min_error:
min_error = error # store your best error so far
saver.save(sess, MODEL_PATH) # save the best-performing network so far
然后,当您想针对性能最佳的迭代测试您的模型时:
saver.restore(sess, MODEL_PATH)
test_error = sess.run(model.error, feed_dict=test_dict)
查看this tutorial 也可以保存和加载元图。根据您的用例,我发现加载步骤有点棘手。