首页 > 解决方案 > Keras - 保存中间层的输出

问题描述

我做了什么?

我正在使用这段代码来实现我的 keras 模型:

X, tx, Y, ty = train_test_split(X, Y, test_size=0.2, random_state=np.random.seed(7), shuffle=True)

X = np.reshape(X, (X.shape[0], 1, X.shape[1]))
tx = np.reshape(tx, (tx.shape[0], 1, tx.shape[1]))

model = Sequential()
model.add(LSTM(100, return_sequences=False, input_shape=(X.shape[1], X.shape[2])))
model.add(Dense(Y.shape[1], activation='softmax'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
filepath="weights-{epoch:02d}-{val_acc:.2f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
callbacks_list = [checkpoint]

model.fit(X, Y, validation_split=.20,
                    epochs=1000, batch_size=50, callbacks=callbacks_list, verbose=0) 

输出:

以下是程序输出的一部分:

Epoch 00993: val_acc did not improve
Epoch 00994: val_acc did not improve
Epoch 00995: val_acc did not improve
Epoch 00996: val_acc did not improve
Epoch 00997: val_acc did not improve
Epoch 00998: val_acc improved from 0.93900 to 0.94543, saving model to weights-998-0.94.hdf5
Epoch 00999: val_acc did not improve

问题:

我需要在任何时期保存 LSTM 层的输出,但我不知道如何?

任何想法?

标签: pythonneural-networkkeras

解决方案


您可以使用Keras 功能 API。您将不得不重写您的模型创建,但这不是很多工作。然后当你写这样的东西时:

lstm_output = LSTM(128, ...)(x)

LSTM 层的输出将在lstm_output变量中,您可以在每个 epoch 的每次迭代中保存它。

我希望这回答了你的问题。


推荐阅读