我有一個模型,我想針對某個超引數設定訓練 10 個 epoch。訓練后,我將使用該history.history物件并找到驗證損失最小的時期。一旦我有了這個最好的得分時期,我想檢索這個模型并用它來預測測驗資料。現在,想象一下我最好的得分時代不是最后一個。這個 Keras 歷史物件中是否有任何選項(例如history.model)來檢索過去的權重值?我想,如果沒有,我將不得不創建一個字典并在每個時期臨時存盤每個模型,直到完成訓練并找到最好的模型。但是,當使用 時model.fit,沒有選項可以存盤每個時代的每個模型。你會怎么做?
uj5u.com熱心網友回復:
Keras 提供了在每個 epoch 之后根據驗證資料評估模型的選項
將您的資料劃分為訓練、測驗和驗證資料后,您可以像這樣訓練您的模型:
model=modelmlp(np.shape(x_trai)[0],hidden,4)
model.compile(loss='categorical_crossentropy', optimizer = 'adam', metrics='accuracy'])
hist=model.fit(x_train,y_train,epochs=epochs,batch_size=batch,
validation_data(x_valid,y_valid),verbose=verbose[1],
callbacks=[ModelCheckpoint(filepath='bestweigths.hdf5',
monitor='val_loss',verbose=verbose[2],save_best_only=True,mode='min')])
model=load_model('bestweigths.hdf5')
此代碼將訓練您的模型,并且在每個 epoch 之后,您的模型將在驗證資料中進行評估。每次驗證資料的結果得到改進時,模型都會保存在檔案中
訓練程序結束后,您只需要從檔案中加載模型
uj5u.com熱心網友回復:
你可以使用 keras 的回呼類來解決這個問題。您可以根據需要的指標保存模型權重。例如,假設您需要以最小的損失保存模型。您必須定義一個模型檢查點。
首先在訓練模型之前以以下給定格式定義檢查點
callbacks = [ModelCheckpoint(filepath='resNet_centering2.h5', monitor='val_loss', mode='min', save_best_only=True)]
現在既然你已經定義了回呼,你將不得不在 model.fit 呼叫中使用這個回呼
history = model.fit(
x=X_train,
y=Y_train,
callbacks=callbacks,
batch_size=4,
epochs=100,
verbose=1,
validation_data=(X_test, Y_test))
這將在定義的檔案路徑中保存模型的最佳權重,您可以使用以下給定的呼叫獲取這些權重。
model=load_model('bestweigths.hdf5')
我希望它能解決你的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430110.html
上一篇:'預期在:/usr/lib/libc .1.dylib':在M1MacBookPro上安裝Tensorflow
下一篇:27. rz與sz上傳下載檔案
