我正在使用該庫來實現(xiàn)學習代理。我已經(jīng)生成了訓練案例,但是我不確定不確定什么是驗證和測試集。老師說:70%應該是培訓用例,10%是測試用例,其余20%應該是驗證用例。編輯我有此訓練代碼,但我不知道何時停止訓練。 def train(self, train, validation, N=0.3, M=0.1): # N: learning rate # M: momentum factor accuracy = list() while(True): error = 0.0 for p in train: input, target = p self.update(input) error = error + self.backPropagate(target, N, M) print "validation" total = 0 for p in validation: input, target = p output = self.update(input) total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output accuracy.append(total) print min(accuracy) print sum(accuracy[-5:])/5 #if i % 100 == 0: print 'error %-14f' % error if ? < ?: break編輯經(jīng)過約20次訓練迭代后,使用驗證數(shù)據(jù)可以得出平均誤差為0.2,應該是80%?平均誤差=給定驗證數(shù)據(jù)輸入/驗證數(shù)據(jù)的大小,驗證目標與輸出之間的絕對差之和。1 avg error 0.520395 validation 0.2469378826842 avg error 0.272367 validation 0.2288324208793 avg error 0.249578 validation 0.216253590304 ...22 avg error 0.227753 validation 0.20023924471423 avg error 0.227905 validation 0.199875013416
3 回答

慕碼人8056858
TA貢獻1803條經(jīng)驗 獲得超6個贊
假設(shè)您在訓練集中訓練模型,然后在測試集中測量模型的性能。您認為仍有改進的空間,請嘗試調(diào)整超參數(shù)(如果模型是神經(jīng)網(wǎng)絡-超參數(shù)是層數(shù)或?qū)又械墓?jié)點)?,F(xiàn)在,您可以獲得更好的性能。但是,當模型接受其他數(shù)據(jù)(不在測試和訓練集中)時,您可能無法獲得相同水平的準確性。這是因為您在調(diào)整超參數(shù)時引入了一些偏差,以在測試集上獲得更好的精度。您基本上已經(jīng)對模型和超參數(shù)進行了調(diào)整,以針對該特定訓練集生成最佳模型。
常見的解決方案是進一步拆分訓練集以創(chuàng)建驗證集?,F(xiàn)在你有
訓練集
測試裝置
驗證集
您可以像以前一樣進行操作,但是這次使用驗證集測試性能并調(diào)整超參數(shù)。更具體地說,您可以在簡化的訓練集上(即完整的訓練集減去驗證集)訓練具有各種超參數(shù)的多個模型,然后選擇在驗證集上表現(xiàn)最佳的模型。
在驗證集上選擇性能最佳的模型后,即可在完整的訓練集(包括驗證集)上訓練最佳模型,這將為您提供最終模型。
最后,您在測試集上評估此最終模型,以獲得對泛化誤差的估計。
- 3 回答
- 0 關(guān)注
- 3901 瀏覽
添加回答
舉報
0/150
提交
取消