[英]How to load a keras model and restart the training from where it stopped
我正在研究基於 LSTM 的編碼器-解碼器 model,由於 memory 錯誤,它無法完成訓練。 我在上一個問題中問過這個問題,但沒有得到任何回應。 在 4600000 行數據上訓練 keras model 時出現 Memory 錯誤
因此,為了解決這個問題,我遇到了重新加載訓練停止的 model 並再次開始訓練的解決方案,如下所示。
train_samples = len(X_train)
val_samples = len(X_test)
batch_size = 128
epochs = 2
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
from keras.callbacks import ModelCheckpoint
filepath = "model.h5"
keras_callbacks = [
EarlyStopping(monitor ="val_loss", mode ="min", patience = 5, restore_best_weights = True),
ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
]
model.fit_generator(generator = generate_batch(X_train, y_train, batch_size = batch_size),
#steps_per_epoch = train_samples//batch_size,
steps_per_epoch = 2000,
epochs=epochs,
verbose=1,
validation_data = generate_batch(X_test, y_test, batch_size = batch_size),
validation_steps = val_samples//batch_size,
callbacks=keras_callbacks)
new_model = load_model(filepath)
# fit the model again
keras_callbacks = [
EarlyStopping(monitor ="val_loss", mode ="min", patience = 5, restore_best_weights = True),
ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
]
new_model.fit_generator(generator = generate_batch(X_train, y_train, batch_size = batch_size),
#steps_per_epoch = train_samples//batch_size,
steps_per_epoch = 2000,
epochs=epochs,
verbose=1,
validation_data = generate_batch(X_test, y_test, batch_size = batch_size),
validation_steps = val_samples//batch_size,
callbacks=keras_callbacks)
假設如果訓練在 2 個 epoch 后停止,我重新加載了 2 個 epoch 后得到的 model 並重新開始訓練。 但我看到 val_accuracy 或 val_loss 沒有變化。 這與之前的時代完全相同。
有人可以建議其他方法嗎? 提前致謝。
這是人工智能從業者的共同需求,解決方案也很簡單。 您必須將 model 保存在某處作為檢查點。
這些鏈接將為您提供幫助: Keras Model 檢查點加載 model
所以基本上你必須保存你的 model,如果你在 2 個 epoch 后停止你的程序,你可以加載檢查點。 (基於您保存模型的頻率)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.