簡體   English   中英

在Keras中加載保存的模型(雙向LSTM)

[英]Loading saved model (Bidirectional LSTM) in Keras

我成功通過以下方法在Keras中訓練並保存了雙向LSTM模型:

model = Sequential()
model.add(Bidirectional(LSTM(N_HIDDEN_NEURONS,
                        return_sequences=True,
                        activation="tanh",
                        input_shape=(SEGMENT_TIME_SIZE, N_FEATURES))))
model.add(Bidirectional(LSTM(N_HIDDEN_NEURONS)))
model.add(Dropout(0.5))
model.add(Dense(N_CLASSES, activation='sigmoid'))
model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])

model.fit(X_train, y_train,
          batch_size=BATCH_SIZE,
          epochs=N_EPOCHS,
          validation_data=[X_test, y_test])

model.save('model_keras/model.h5')

但是,當我要加載它時:

model = load_model('model_keras/model.h5')

我收到一個錯誤:

ValueError:您正在嘗試將包含3層的權重文件加載到具有0層的模型中。

我還嘗試了不同的方法,例如分別保存和加載模型體系結構和權重,但是沒有一個對我有用。 另外,以前,當我使用普通的(單向)LSTM時,加載模型可以正常工作。

@mpariente@today所述, input_shape是雙向的參數,不是LSTM,請參閱Keras文檔 我的解決方案:

# Model
model = Sequential()
model.add(Bidirectional(LSTM(N_HIDDEN_NEURONS,
                             return_sequences=True,
                             activation="tanh"), 
                        input_shape=(SEGMENT_TIME_SIZE, N_FEATURES)))
model.add(Bidirectional(LSTM(N_HIDDEN_NEURONS)))
model.add(Dropout(0.5))
model.add(Dense(N_CLASSES, activation='sigmoid'))
model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])

model.fit(X_train, y_train,
          batch_size=BATCH_SIZE,
          epochs=N_EPOCHS,
          validation_data=[X_test, y_test])

model.save('model_keras/model.h5')

然后,要加載,只需執行以下操作:

model = load_model('model_keras/model.h5')

暫無
暫無

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

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