[英]Keras layers unfreezing causes training process to start from scratch
我訓練了一個具有多個層的模型,而不是對model.layers set中的每個層進行訓練
layer.trainable = False
我在此模型中添加了幾層,稱為
model.compile(...)
並針對凍結幾個圖層的幾個紀元訓練了這個新模型。
后來我決定解凍各層並跑
for layer in model.layers:
layer.trainable = True
model.compile(...)
當我開始使用未凍結的層來學習模型時,即使我只是想繼續使用先前學習的權重進行訓練,我也會得到很高的損失函數值。 我還檢查了model.compile(...)
模型是否仍能很好地預測(不重置以前學習的權重),但是一旦學習過程開始,一切都會被“擦除”,我從頭開始。
有人可以澄清一下,這種行為是否可以? 如何重新編譯模型而不是從頭開始?
PS我還要求手動保存權重,並使用layer.get_weights()
和layer.set_weights()
將其分配回新編譯的模型
我使用了相同的編譯參數(類似的optimizer
和類似的loss
)
在開始微調訓練有素的圖層時,您可能需要降低學習率。 例如,對於新的密集層(頂部),所有其他層均設置為不可訓練的,學習率0.01可能適用。 但是,當將所有圖層設置為可訓練時,您可能需要將學習率降低為0.001,而無需手動復制或設置權重。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.