我的數據是按時間順序列出的一組匹配和結果。通常情況下,「離線」驗證的目的,我會跑這樣的事情來測試我的算法如何工作的:使用TensorFlow「在線」驗證
# 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它們不可互換。第一種方法僅訓練訓練數據,第二種方法在評估測試數據集中的每個數據點是否預測正確後重新訓練自己,這更能反映真實情況。 – michaelsnowden
@ user1735003驗證步驟不計算相同的事情。版本1中的驗證準確性比版本2更低且更不現實,因爲版本2在每個數據點之後都改進了它的參數 - 注意會話在版本2中的驗證步驟期間也運行優化器,而版本1中未發生 – michaelsnowden