簡體   English   中英

保存預訓練 model 層權重,但無法通過 H5PY 加載權重

[英]Saved pre-train model layer weights but cannot load the weights through H5PY

我一直在嘗試保存我的神經網絡 model 的權重,以便我可以將它的一些層用於另一個神經網絡 model 以在另一個數據集上進行訓練。

預訓練 model:

model = Sequential()
model.add(tf.keras.layers.Dense(100, input_shape=(X_train_orig_sm.shape)))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(10))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(1))
model.add(tf.keras.layers.Activation('sigmoid'))

model.summary()
# need sparse otherwise shape is wrong. check why
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

print('Fitting the data to the model')
batch_size = 20
epochs = 10
history = model.fit(X_train_orig_sm, Y_train_orig_sm, batch_size=batch_size, epochs=epochs, verbose=1, validation_split=0.2)
print('Evaluating the test data on the model')

我如何保存神經網絡的權重:

model.save_weights("dnn_model.h5")

我如何嘗試加載神經網絡的權重:

dnn_model=model.load_weights("dnn_model.h5")
dnn_model.layers[5]

在嘗試加載 model 時,我收到以下錯誤:

AttributeError: 'NoneType' object has no attribute 'layers'

我似乎不明白為什么即使在保存 model 之前訓練了預訓練的神經網絡,也無法識別神經網絡的層。 任何建議、解決方案或方向都將受到高度贊賞。 謝謝你。

當您調用model.save_weights("dnn_model.h5")時,您只保存 model 的“權重”。 您不保存 model 的實際結構。 這就是為什么您無法訪問圖層等的原因。

要保存實際的 model,您可以調用以下命令。

# save
model.save('dnn_model') # save as pb
model.save('dnn_model.h5') # save as HDF5

# load
dnn_model = tf.keras.models.load_model('dnn_model') # load as pb
dnn_model = tf.keras.models.load_model('dnn_model.h5') # load as HDF5

注意:您無需為名稱添加擴展名即可保存為 pb。

資料來源: https://www.tensorflow.org/tutorials/keras/save_and_load

暫無
暫無

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

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