转移学习,添加Keras LSTM层,(热狗,不是使用二进制交叉熵的热狗)

问题描述 投票:0回答:1

训练特征,形状(1032,5,5,122880)进入LSTM层。这会产生“ValueError:输入0与层lstm_16不兼容:预期ndim = 3,找到ndim = 2”

1032是训练样本的数量

5x5x122880是训练样本的瓶颈功能

model = Sequential()
    model.add(CuDNNLSTM(2048,input_shape=train_final_model.shape[:1))
model.add(Dense(2, activation='sigmoid'))

好像Keras ValueError告诉我在运行LSTM层之前我应该​​重塑训练瓶颈功能。但这样做:

training_bottlenecked_features = np.reshape(train_final_model, (1032,25,122880))
print(training_bottlenecked_features.shape)
final_model.add(LSTM(2,input_shape=training_bottlenecked_features.shape[:1]))

收益率:

(1032, 25, 122880)

“ValueError:输入0与层lstm_23不兼容:预期ndim = 3,找到ndim = 2”

我已经在其他几个组合中使用了输入,所以我觉得我可能会遗漏Keras LSTM文档中的一些基本内容:https://keras.io/layers/recurrent/感谢您提供的任何见解。

python deep-learning keras lstm
1个回答
0
投票

事实证明,LSTM和RNN依赖于使用keras.layers.TimeDistributed。这需要最低限度地重构训练和验证标签维度(例如,使用np.expand_dims())。

如果TimeDistributed用于包装整个Sequential流,您可能还需要重新整形训练和验证数据。

这里的对话框有助于回忆经常性的网络架构区别:https://github.com/keras-team/keras/issues/1029

反思,我希望我会开始在这里阅读:https://keras.io/layers/wrappers/

© www.soinside.com 2019 - 2024. All rights reserved.