簡體   English   中英

修改訓練好的模型架構並繼續訓練 Keras

[英]Modify trained model architecture and continue training Keras

我想以順序方式訓練模型。 也就是說,我最初想用一個簡單的架構訓練模型,一旦訓練好,我想添加幾個層並繼續訓練。 可以在 Keras 中做到這一點嗎? 如果是這樣,如何?

我試圖修改模型架構。 但是在我編譯之前,這些更改都無效。 一旦我編譯,所有的權重都會重新初始化,我會丟失所有經過訓練的信息。

我在 web 和 SO 中發現的所有問題要么是關於加載預訓練模型並繼續訓練,要么是修改預訓練模型的架構,然后僅對其進行測試。 我沒有找到與我的問題相關的任何內容。 任何指針也受到高度贊賞。

PS:我在 tensorflow 2.0 包中使用 Keras。

在不知道模型詳細信息的情況下,以下代碼段可能會有所幫助:

from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Input

# Train your initial model
def get_initial_model():
    ...
    return model

model = get_initial_model()
model.fit(...)
model.save_weights('initial_model_weights.h5')

# Use Model API to create another model, built on your initial model
initial_model = get_initial_model()
initial_model.load_weights('initial_model_weights.h5')

nn_input = Input(...)
x = initial_model(nn_input)
x = Dense(...)(x)  # This is the additional layer, connected to your initial model
nn_output = Dense(...)(x)

# Combine your model
full_model = Model(inputs=nn_input, outputs=nn_output)

# Compile and train as usual
full_model.compile(...)
full_model.fit(...)

基本上,你訓練你的初始模型,保存它。 並再次重新加載它,並使用Model API 將其與附加層包裝在一起。 如果您不熟悉Model API,您可以在此處查看 Keras 文檔(因為 Tensorflow.Keras 2.0 的 API 保持不變)。

請注意,您需要檢查初始模型的最終層的輸出形狀是否與附加層兼容(例如,如果您只是在進行特征提取,則可能希望從初始模型中刪除最終的 Dense 層)。

暫無
暫無

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

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