[英]what happens to validation data after training completes?
不是 ML 專家,而是我訓練機器學習的正常流程
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X.values,
y.values,
test_size=0.30,
random_state=0)
跳過整個 model 構建過程...當您 go 在定義和編譯后訓練模型(適合它)時,它是使用如下驗證拆分參數
history = model.fit(X_train, y_train, epochs=10,validation_split=0.2)
這似乎再次將訓練數據集除以 20% 的數據點,以在訓練期間驗證我們的 model。 如果假設數據集中有 1000 個數據點(行),上面的第一個代碼將導致 700 個訓練數據點用於訓練,300 個用於測試
第二個將再次將 700 的 20% 用於驗證,留下 640 個數據點用於訓練和 160 個用於驗證
給我們留下小數據來訓練我們的 model。
我最近遇到了一種方法,您可以使用測試數據進行驗證,如下所示
history = model.fit(x_train, y_train, validation_data=(x_test, y_test))
我的問題是訓練完成后驗證數據實際上會發生什么,它會自動添加到訓練我們的 model 以某種方式最終提高我們的准確性,並且使用測試數據進行足夠的驗證,如果我們這樣做,它會在什么時候產生影響我們嘗試使用測試數據評估我們的 model。
如keras
所述(最后一個 model.fit 方法來自 keras)
驗證拆分
在 0 和 1 之間浮動。要用作驗證數據的訓練數據的一部分。 model 將分離這部分訓練數據,不會對其進行訓練,並將在每個 epoch 結束時評估該數據的損失和任何 model 指標。 在改組之前,從提供的 x 和 y 數據中的最后一個樣本中選擇驗證數據。
驗證數據
在每個 epoch 結束時評估損失和任何 model 指標的數據。 model 不會在此數據上進行訓練。 這可以是一個列表 (x_val, y_val) 或一個列表 (x_val, y_val, val_sample_weights)。 validation_data 將覆蓋validation_split。
因此,使用此設置,model 將不會在驗證數據上進行訓練。
理論上,驗證數據用於評估您的 model 並調整其超參數。
如果您需要將此 model 投入生產,您應該使用所有數據重新訓練 model,知道性能將是您從驗證\測試數據中獲得的結果
無論如何,驗證\測試數據的表現通常是對性能的樂觀估計
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.