You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对LSTM模型输出的指定维度取平均,将3维转为2维?

问题解答

完全可以通过对输出的时间步维度(也就是形状中的第二个维度,对应timesteps=20)取平均来完成降维,这种方式能把序列维度的信息整合起来,适配你的2维目标数据。下面给出两种具体实现方式:

方法一:使用GlobalAveragePooling1D层

这是Keras专门为序列数据降维设计的层,会自动对时间步维度计算平均值,代码修改如下:

batch_sizes = 1
epochs = 2
timesteps = 20

inputs_1_mae = tf.keras.layers.Input(shape=(20,10), batch_size=batch_sizes)
lstm_1_mae = tf.keras.layers.LSTM(10, stateful=True, return_sequences=True)(inputs_1_mae) 
lstm_2_mae = tf.keras.layers.LSTM(10, stateful=True, return_sequences=True)(lstm_1_mae) 

output_1_mae = tf.keras.layers.Dense(units=10)(lstm_2_mae)
# 新增全局平均池化层,对时间步维度(axis=1)取平均
avg_output = tf.keras.layers.GlobalAveragePooling1D()(output_1_mae)

regressor_mae = tf.keras.Model(inputs=inputs_1_mae, outputs=avg_output) 
regressor_mae.compile(optimizer="adam", loss="mae") 
regressor_mae.summary() 

regressor_mae.fit(final_x_array, final_y_array, batch_size=batch_sizes, epochs=epochs)

修改后模型摘要里,GlobalAveragePooling1D层的输出形状会变成(1, 10),正好匹配你的目标数据维度。

方法二:使用Lambda层手动计算平均

如果需要更灵活的操作,可以用Lambda层结合tf.reduce_mean指定要降维的轴:

batch_sizes = 1
epochs = 2
timesteps = 20

inputs_1_mae = tf.keras.layers.Input(shape=(20,10), batch_size=batch_sizes)
lstm_1_mae = tf.keras.layers.LSTM(10, stateful=True, return_sequences=True)(inputs_1_mae) 
lstm_2_mae = tf.keras.layers.LSTM(10, stateful=True, return_sequences=True)(lstm_1_mae) 

output_1_mae = tf.keras.layers.Dense(units=10)(lstm_2_mae)
# 用Lambda层对axis=1(时间步维度)取平均
avg_output = tf.keras.layers.Lambda(lambda x: tf.reduce_mean(x, axis=1))(output_1_mae)

regressor_mae = tf.keras.Model(inputs=inputs_1_mae, outputs=avg_output) 
regressor_mae.compile(optimizer="adam", loss="mae") 
regressor_mae.summary() 

regressor_mae.fit(final_x_array, final_y_array, batch_size=batch_sizes, epochs=epochs)

注意事项

  • 确保目标数据final_y_array的形状是(样本数, 10),和模型输出的(1,10)(单样本时)匹配,这样损失函数才能正常计算。
  • 两种方法都不会影响LSTM的stateful属性,训练时的状态管理不受影响。

内容的提问来源于stack exchange,提问作者Maagalam HARSHA VARDHAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:17:42