确认堆叠LSTM股价预测架构的理解是否正确
股价预测LSTM架构理解确认
现有RNN架构代码
regressor = Sequential() regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1))) regressor.add(Dropout(0.2)) regressor.add(LSTM(units = 50, return_sequences = True)) regressor.add(Dropout(0.2)) regressor.add(LSTM(units = 50, return_sequences = True)) regressor.add(Dropout(0.2)) regressor.add(LSTM(units = 50)) regressor.add(Dropout(0.2)) regressor.add(Dense(units = 1))
注:该架构采用60个时间步,用于股价时间序列预测,模型摘要见配图。
你的理解内容
第一层为含50个单元的LSTM层,return_sequences设为True,输出为形状为(none,60,50)的3D矩阵,即返回每个时间步的50个单元状态,none为调用fit或predict时确定的批量大小占位符,输出全连接至下一层LSTM;第二、三层LSTM层同理;第四层LSTM层因return_sequences设为False,仅返回每个单元在最后时间步的最终隐藏状态,输出形状为(none,50);随后连接含1个神经元的输出Dense层,输出形状为(none,1)。
确认结果
你的理解完全正确,对应每一层的输出逻辑和形状都没问题:
- 前三层LSTM都设置了
return_sequences=True,所以每一层都会输出每个时间步的隐藏状态,形状保持(批量大小, 60, 50),这样才能作为下一层LSTM的输入(LSTM需要3D输入); - 第四层LSTM未设置
return_sequences(默认False),所以只输出最后一个时间步的隐藏状态,形状变为(批量大小, 50),符合Dense层需要2D输入的要求; - 最后的Dense层将50维的特征压缩为1维,对应股价预测的单值输出,形状为
(批量大小, 1)。
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

