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

Python 迁移学习,添加Keras LSTM层(热狗,而不是使用二进制交叉熵的热狗),python,deep-learning,keras,lstm,Python,Deep Learning,Keras,Lstm,训练特征shape(1032,5,5122880)进入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'))

训练特征shape(1032,5,5122880)进入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]))
结果如下:

(1032122880)

ValueError:输入0与层lstm_23不兼容:预期ndim=3,发现ndim=2


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

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

如果使用TimeDistributed来包装整个顺序流,则可能还需要重塑培训和验证数据

此处的对话框有助于回顾反复出现的网络体系结构差异:

回想起来,我希望我能在这里开始阅读: