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

LSTM回归模型测试预测呈扁平线问题技术求助

电池SOC时间序列回归问题:LSTM模型未学习,预测结果呈均值扁平线

这是一个以电池容量(SOC)为输出、电压为单一输入变量的非线性时间序列回归问题。使用LSTM回归模型对测试数据进行预测时,结果始终呈半扁平线,疑似为训练数据中输出变量的均值。

测试集预测值与真实值对比(模型参数:窗口大小10、批量大小256、LSTM节点数16):
测试数据预测结果

数据已做归一化处理,原采样率为10Hz,先后下采样至1秒和3秒。曾怀疑电压波动是问题根源,但3秒采样未带来明显改善。

下采样至3秒后的数据:
归一化训练数据;Y:SOC,X:电压
归一化测试数据;Y:SOC,X:电压

已尝试调整多种模型与学习参数,但问题依旧,因此判断并非参数调优问题,而是模型完全未学习。调整的参数包括:

  • LSTM层:始终为单层,后接无额外配置的Dense层
  • LSTM节点数:[4,8,16,32]
  • 训练轮数(Epoch):[16,32,64,128]
  • 窗口大小(输入向量深度):[8,32,64,128]
  • 批量大小:[32,64,128,256]
  • 学习率:[.0005,.0001,.001]
  • 优化器:ADAM,可选配置:[无,clipnorm=1,clipvalue=0.5]

模型定义代码

backend.clear_session()
model1 = Sequential()
model1.add(LSTM(16,input_shape=(win_sz, features_cnt) )) # stateless
model1.add(layers.Dense(1))
model1.summary()

模型训练与验证代码

n_epochs = 12
iterations = tr_samples_sh_cnt // batch_sz_tr
loss = tf.keras.losses.MeanAbsoluteError()
optimizer = tf.optimizers.Adam(learning_rate = 0.001)
loss_history = []

@tf.function
def train_model_on_batch():
    start = epoch * batch_sz_tr
    X_batch = df_feat_tr_3D[start:start+batch_sz_tr, :, :]
    y_batch = df_SOC_tr_2D[start:start+batch_sz_tr, :]

    with tf.GradientTape() as tape:
        current_loss = loss(model1(X_batch), y_batch)
    gradients = tape.gradient(current_loss, model1.trainable_variables)
    optimizer.apply_gradients(zip(gradients, model1.trainable_variables))
    return current_loss

for epoch in range(n_epochs+1):
    for iteration in range(iterations):
        current_loss = train_model_on_batch()
    if epoch % 1 == 0:
        loss_history.append(current_loss.numpy())
        print("{}.   		Loss: {}".format(
            epoch, loss_history[-1]))
print('\nTraining complete.')


P_test = model1.predict(df_feat_test_3D)

在LSTM层与Dense层均添加sigmoid激活函数后,预测结果仅有微小变化,但仍远未达到合理拟合效果。
添加激活函数后的测试数据预测结果

内容的提问来源于stack exchange,提问作者Kineticx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:20:56