我正在使用該庫來實現學習代理。我已經生成了訓練案例,但是我不確定不確定什么是驗證和測試集。老師說: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編輯經過約20次訓練迭代后,使用驗證數據可以得出平均誤差為0.2,應該是80%?平均誤差=給定驗證數據輸入/驗證數據的大小,驗證目標與輸出之間的絕對差之和。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條經驗 獲得超6個贊
假設您在訓練集中訓練模型,然后在測試集中測量模型的性能。您認為仍有改進的空間,請嘗試調整超參數(如果模型是神經網絡-超參數是層數或層中的節點)。現在,您可以獲得更好的性能。但是,當模型接受其他數據(不在測試和訓練集中)時,您可能無法獲得相同水平的準確性。這是因為您在調整超參數時引入了一些偏差,以在測試集上獲得更好的精度。您基本上已經對模型和超參數進行了調整,以針對該特定訓練集生成最佳模型。
常見的解決方案是進一步拆分訓練集以創建驗證集?,F在你有
訓練集
測試裝置
驗證集
您可以像以前一樣進行操作,但是這次使用驗證集測試性能并調整超參數。更具體地說,您可以在簡化的訓練集上(即完整的訓練集減去驗證集)訓練具有各種超參數的多個模型,然后選擇在驗證集上表現最佳的模型。
在驗證集上選擇性能最佳的模型后,即可在完整的訓練集(包括驗證集)上訓練最佳模型,這將為您提供最終模型。
最后,您在測試集上評估此最終模型,以獲得對泛化誤差的估計。
- 3 回答
- 0 關注
- 3905 瀏覽
添加回答
舉報
0/150
提交
取消