【发布时间】:2017-07-05 00:08:55
【问题描述】:
我的数据是一组匹配和结果,按时间顺序列出。通常,出于“离线”验证的目的,我会运行以下代码来测试我的算法的运行情况:
# train
for matches_batch, outcomes_bach in train_data:
sess.run(optimizer, feed_dict={matches: matches_batch, outcomes: outcomes_batch})
# offline validation (just compute accuracy on test set)
test_accuracy = sess.run(accuracy, feed_dict={matches: test_matches, outcomes: test_outcomes})
print 'test accuracy = {:.2%}'.format(test_accuracy)
但是,在现实世界中。事情将“在线”完成,我在离线时训练一堆匹配,然后每次我预测一个新匹配时,我也会通过使用结果运行优化器来更新我的模型参数,如下所示:
# train
for matches_batch, outcomes_bach in train_data:
sess.run(optimizer, feed_dict={matches: matches_batch, outcomes: outcomes_batch})
# online validation (update accuracy and model with each new data point)
test_accuracy = 0.0
for match, outcome in zip(test_matches, test_outcomes):
_, acc = sess.run([optimizer, accuracy], feed_dict={matches: [match], outcomes: [outcome])
test_accuracy += acc / len(test_matches)
print 'test accuracy = {:.2%}'.format(test_accuracy)
问题是上述在线测试的实现(这是验证方案here的一部分)很慢。
有没有办法通过 tensorflow 来加快在线验证的速度?
【问题讨论】:
-
@user1735003 它们不可互换。第一个版本仅在训练数据上进行训练,第二个版本在评估其预测是否正确后,使用测试数据集中的每个数据点重新训练自己,这更能反映现实世界的场景。
-
@user1735003 验证步骤计算的不是同一件事。版本 1 中的验证准确度比版本 2 更低且不太现实,因为版本 2 在每个数据点之后都会改进其参数——请注意,会话在版本 2 的验证步骤期间也会运行优化器,这在版本 1 中不会发生.
标签: python validation optimization tensorflow