顯然,我知道添加驗證資料會使訓練時間更長,但我在這里談論的時間差是荒謬的。代碼:
# Training
def training(self, callback_bool):
if callback_bool:
callback_list = []
else:
callback_list = []
self.history = self.model.fit(self.x_train, self.y_train, validation_data=(self.x_test, self.y_test),
batch_size=1, steps_per_epoch=10, epochs=100)
即使我的測驗資料的大小是 10,000 個資料點,上面的代碼也花費了我 30 多分鐘的時間來訓練。我的訓練資料的大小是 40,000 個資料點,當我在沒有驗證資料的情況下訓練時,我會在幾秒鐘內完成。有沒有辦法解決這個問題?為什么要花這么長時間?為了啟動,我也在 gpu 上訓練!
uj5u.com熱心網友回復:
我假設驗證按預期作業,并且您在培訓程序中遇到了問題。您正在使用 batch_size = 1 和 steps_per_epoch = 10,這意味著模型在每個 epoch 期間只會看到 10 個資料點。這就是為什么它只需要幾秒鐘。另一方面,您不使用validation_steps 引數,這意味著每個時期之后的驗證將運行,直到您的驗證資料集耗盡,即10.000 步。所以時代不同了。您可以在官方檔案中閱讀有關 model.fit 及其引數的更多資訊。
如果您的訓練資料集不是無限的,我建議您洗掉 steps_per_epoch 引數。如果是,則將len(x_train)//batch_size的值傳遞給它。這樣,模型將獲得每個時期的每個訓練資料點。我假設每個時代都需要大約 1.5 小時,而不是您目前擁有的幾秒鐘。另外我建議增加batch_size,如果沒有特定原因使用1的batch size。
編輯:錯別字
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362370.html
標籤:Python 张量流 机器学习 凯拉斯 scikit-学习
