关于LSTM层定位及神经网络架构分层的技术问询
问题解答
你的模型代码
model = Sequential(name="Activity_recognition_model") model.add(LSTM(units, input_shape=(n_timesteps,n_features))) model.add(Dense(128, activation = 'relu')) model.add(Dropout(0.6)) model.add(Dense(64, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(n_outputs)) model.compile(loss='mae', optimizer='adam', metrics=[tf.keras.metrics.RootMeanSquaredError()])
注:n_features为输入特征数量。
问题1:LSTM层是否属于输入层,还是应将输入层与LSTM层设为两个独立层?
LSTM层不属于输入层,绘制架构时必须把输入层和LSTM层设为两个独立部分:
- 输入层对应代码中
input_shape=(n_timesteps,n_features)定义的张量结构,是模型接收原始时序数据的入口。这一层在Keras中无需显式添加,但绘制架构时必须单独展示,标注清楚输入维度:(时间步长n_timesteps, 特征数n_features)。 - LSTM层是第一个循环隐藏层,负责对时序输入进行特征提取,属于模型的核心计算层,和输入层是完全独立的层级。
问题2:剩余的层是否为2个隐藏层加1个输出层?
是的,但需要明确层级性质:
- 两个全连接隐藏层:
Dense(128, activation='relu')和Dense(64, activation='relu'),这两层带有可训练参数,负责对LSTM输出的特征做进一步映射。 - Dropout层(
Dropout(0.6)、Dropout(0.5))属于正则化层,没有可训练参数,仅用于防止过拟合,绘制时可以标注在对应隐藏层的下方或旁边,但不算独立的隐藏层结构。 - 输出层:
Dense(n_outputs),是模型输出最终结果的层级,对应任务的输出维度。
内容的提问来源于stack exchange,提问作者Shosho
相关产品推荐
相关产品推荐

