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