簡體   English   中英

如何加載 keras model 並從停止的地方重新開始訓練

[英]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.

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