簡體   English   中英

在進行遷移學習和微調時如何管理 epoch

[英]How to manage epochs when doing Transfer Learning and Fine-tuning

我正在訓練 ResNet50 model,我想在初始訓練后應用微調。 這是我在沒有微調的情況下訓練 model 時:

# Train initial model without fine-tuning
initial_epochs = 100
history = model.fit(train_set, validation_data = dev_set, epochs=initial_epochs,verbose=1, callbacks=callbacks)

這是從上一個 epoch 進行微調和恢復的代碼:

# Train the model again for a few epochs
fine_tune_epochs = 5
total_epochs = initial_epochs + fine_tune_epochs
history_tuned = model.fit(train_set, validation_data = dev_set, initial_epoch=history.epoch[-1], epochs=total_epochs,verbose=1, callbacks=callbacks)

問題是,我已將 initial_epochs 設置為 100,因為我有 early_stopping。 因此,每個 model 可能會運行約 20 至約 40 個時期,然后停止。 所以 initial_epochs 並不是真正的 100。

用於正常訓練和微調訓練的 Tensorboard 日志

這是 tensorboard 中的兩個培訓課程。 有沒有辦法從上次訓練 session 的時期恢復微調訓練? 如果我只是輸入 epochs = 5 並擁有 initial_epoch 原樣怎么辦?

或者我可以說:

# Train the model again for a few epochs
fine_tune_epochs = 5
total_epochs = len(history.epoch) + tuned_epochs # Get total number of epochs
history_tuned = model.fit(train_set, validation_data = dev_set, initial_epoch=history.epoch[-1], epochs=total_epochs,verbose=1, callbacks=callbacks)

解決方案:

運行第一次訓練 session:

history = model.fit(X_train, y_train, epochs=10, validation_data=(X_valid, y_valid), callbacks=cb)

print(history.epoch)
print(len(history.epoch))
print(history.epoch[-1])

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

10

9

然后:

tuned_epochs = 5
total_epochs = len(history.epoch) + tuned_epochs
history_tuned =  model.fit(X_train, y_train, initial_epoch=history.epoch[-1], epochs=total_epochs, validation_data=(X_valid, y_valid), callbacks=cb)

這將告訴擬合 function 從最后一次訓練 session 的最后一個 epoch 具有初始 epoch,並且要運行的總 epoch 將是最后一次訓練會話中的所有 epoch + 5

求解后的張量板

我很確定,即使使用 TensorBoard,您看到微調從 epoch 0 重新開始,這也不是問題。 調用.fit(...)會從您停止的時期繼續訓練。
這只是 TensorBoard 的一個可視化問題,但我知道這樣有點違反直覺。 我認為 model 不存儲訓練的 epoch 數,所以這就是發生這種情況的原因。

您的解決方案對我來說看起來不錯。 fit()中設置initial_epoch應該會讓您從指定的時期重新開始訓練。 然后將epochs設置為initial_epoch + x ,讓您訓練x額外的 epoch。

暫無
暫無

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

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