1. 程式人生 > >Tensorflow基礎:使用驗證資料集判斷模型效果

Tensorflow基礎:使用驗證資料集判斷模型效果

在上一篇部落格中,給出了使用神經網路解決MNIST問題的完整程式。在這個程式的開始設定了初始學習率、學習率衰減率、隱藏層節點數量、迭代輪數等7種不同的引數。

在大部分情況下,配置神經網路的這些引數都是需要通過實驗來調整的。使用測試資料來選取引數可能會導致神經網路模型過度擬合測試資料,從而失去對未知資料的預判能力。需要保證測試資料在訓練過程中是不可見的

於是,為了評測神經網路模型在不同引數下的效果,一般會從訓練資料中抽取一部分作為驗證資料。使用驗證資料就可以評判不同引數取值下的模型的表現。

為了說明驗證資料在一定程度上可以作為模型效果的評判標準,我們將對比在不同迭代輪數的情況下,模型在驗證資料和測試資料上的正確率。

            if i % 1000 == 0:
                validate_acc = sess.run(accuracy, feed_dict=validate_feed)
                test_acc = sess.run(accuracy, feed_dict=test_feed)
                print("After %d training steps, validation accuracy"
                      "using average model is %g, test accuracy"
"using average model is %g " % (i, validate_acc, test_acc))

雖然兩條曲線不完全重合,但是這兩條曲線的趨勢基本一樣,而且他們的相關係數大於0.9999。

一般來說,選取的驗證資料分佈越接近測試資料分佈,模型在驗證資料上的表現越可以體現模型在測試資料上的表現。