python - 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 层的输出,但我不知道如何?
任何想法?
解决方案
您可以使用Keras 功能 API。您将不得不重写您的模型创建,但这不是很多工作。然后当你写这样的东西时:
lstm_output = LSTM(128, ...)(x)
LSTM 层的输出将在lstm_output
变量中,您可以在每个 epoch 的每次迭代中保存它。
我希望这回答了你的问题。
推荐阅读
- apache-kafka - 只有在每个分区的副本上写入成功时,对 Kafka 主题的写入才会成功?
- c - next 返回 NULL 后 seq_file 无法正常工作
- python - 如何在撤消历史记录中仅创建一项时替换 QLineEdit 中的文本?
- sql - 为什么 oracle isqlplus localhost 没有在我的浏览器中打开?
- c# - 基于类方法的 C# 构造函数模式
- delphi - 完成 Delphi 应用程序后,如何确保删除 BDE *.MB 文件?
- docker - 集群上的 Confluent 控制中心
- sql - 过滤 SQL 查询字符串以禁止写入
- sql - 更改数值列以降低精度
- python-3.x - 在 Ubuntu 中使用 Python 读取目录中的所有文件是完全无序的吗?