在訓練過程之后,我想通過加載創建的model.h5并執行評估過程來檢查準確性。但是,我收到以下警告:/usr/local/lib/python3.5/dist-packages/keras/engine/saving.py:269: UserWarning: 在保存文件中未找到訓練配置:模型未編譯。手動編譯。warnings.warn('在保存文件中沒有找到訓練配置:這個dist-packages/keras/engine/saving.py文件所以加載創建的模型的問題 - >這行代碼train_model = load_model('model.h5')問題表明模型沒有編譯,但是,我做到了。optimizer = Adam(lr=lr, clipnorm=0.001)train_model.compile(loss=dummy_loss, optimizer=optimizer)我不明白我做錯了什么。. . 請幫我!求救:-(
3 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
介紹
我想補充 olejorgenb 的答案 - 對于特定場景,您不想訓練模型,只需使用它(例如在生產中)。
“編譯”的意思是“準備訓練”,主要包括設置優化器。也可以之前保存過,加載保存的模型后就可以繼續“相同”的訓練了。
修復
但是,場景如何 - 我只想運行模型?好吧,使用compile=False
參數來load_model
喜歡:
trained_model = load_model('model.h5', compile=False)
如果不先.fit()
使用trained_model.compile(...)
,您將無法使用此模型,但最重要的是 - 警告會消失。
雜項筆記
順便說一句,在我的 Keras 版本中,該參數include_optimizer
的默認值為True
. 這也適用于像Checkpoint
. 這意味著,在加載由 Keras 保存的模型時,您通??梢灾竿膬灮鳎ㄇ闆r除外:請參閱 Hull Gasper 的回答)。
但是,當您有一個不是由 Keras 訓練的模型時(例如,當轉換由 Darknet 訓練的模型時),該模型將被保存為未編譯。這會產生警告,您可以通過上述方式消除它。
添加回答
舉報
0/150
提交
取消