簡體   English   中英

訓練完成后驗證數據會發生什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM