簡體   English   中英

keras 將模型權重保存到一個文件中

[英]keras save the model weights to one file

我有一個 keras 模型,它保存每個時代的權重我如何制作一個文件

這是保存模式的行

我有 50 個 epoch,我會得到 50 個權重,我只想要 1 個將它們全部保存在一個文件中

>     model.save_weights('checkpoint_epoch_{}.hdf5'.format(k))

知道我該怎么做才能將它保存在一個文件中,因為我稍后必須將權重轉換為 tensorflow 模型

期望的重量

checkpoint.h5

您不需要一個文件中的權重,您可以保存整個模型並使用TFLiteConverter將您的 tf.keras 模型或 tf 模型直接從 .h5 文件轉換為 lite。

 import tensorflow as tf
 from tf.keras.models import load_model

 model=load_model("model.h5")

 # Convert the model.
 converter = tf.lite.TFLiteConverter.from_keras_model(model)
 tflite_model = converter.convert()

如果您構建了 Keras 模型,則可以在使用名為 ModelCheckpoint 的回調進行訓練時在每個時期保存模型。

回調是在訓練過程的給定階段應用的一組函數。 您可以使用回調來查看訓練期間模型的內部狀態和統計信息。 您可以將回調列表(作為關鍵字參數回調)傳遞給 Sequential 或 Model 類的 .fit() 方法。 然后將在訓練的每個階段調用回調的相關方法。

from keras.callbacks import ModelCheckpoint


'''
saves the model weights after each epoch
'''
checkpointer = ModelCheckpoint(filepath='model-{epoch:02d}-{val_loss:.2f}.h5', verbose=1)
model.fit(x_train, y_train, batch_size=batchsize, epochs=epochs, verbose=0, validation_data=(X_test, Y_test), callbacks=[checkpointer])

然后模型將與文件名中的紀元號和驗證損失一起保存

所以你可以保存一個模型,然后如上所述加載它。

為什么要保存每個 epoch 的權重? 通常,您會保存驗證損失最低的時期的權重。 訓練完成后,您將這些權重加載到模型中以進行預測。 Keras 回調 ModelCheckpoint 將為您做到這一點。 您可以只保存權重或保存整個模型。 我不喜歡此回調的一件事是它將結果保存到文件中,然后您必須從文件中讀取數據。 如果保存整個模型,重新加載模型可能需要很長時間。 為了避免這種情況,我編寫了一個自定義回調,它將具有最低驗證損失的權重保存到一個類變量中。 代碼在這里 變量 save_best_weights.best_weights 將權重存儲在其中,因此您可以使用 model.set_weights(save_best_weights.best_weights) 進行預測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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