堆叠LSTM输出与输入同形状三维张量报错问题求解
解决方案
首先排查两个核心问题,修改后即可满足输出三维同结构的需求:
- 修正代码缩进错误:你贴出的代码中第一层Dropout存在多余缩进,实际运行时可能导致第一层LSTM的
return_sequences=True参数未正确生效,使得第一层LSTM默认返回最后一个时间步的二维输出,触发第二层LSTM的维度不匹配报错。修正后的规范代码如下:
self.model = Sequential() self.model.add(LSTM(self.config.layers[0], input_shape=(None, channel.X_train.shape[2]), return_sequences=True)) self.model.add(Dropout(self.config.dropout)) self.model.add(LSTM( self.config.layers[1], return_sequences=True)) self.model.add(Dropout(self.config.dropout)) self.model.add(Dense(self.config.n_predictions)) self.model.add(Activation('linear'))
- 匹配输出维度:你需要输出形状和输入
(2000, 200, 10)完全一致,需要将self.config.n_predictions设置为10。Dense层会自动对每个时间步的输出做特征映射,最终输出形状会保持(样本数, 时间步长, 特征数)的三维结构,符合你的需求。
如果调整后仍有异常,确认你传入模型的训练数据形状是否确实为(2000, 200, 10),没有在数据预处理阶段被错误降维即可。
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

