azuremapleleaf 2020-04-21 23:32 采纳率: 0%
浏览 7659

lstm做时序预测一直过拟合该怎么解决

做的8推1的时序预测,但是不管怎么修改模型,一直都是过拟合的状态,loss下降 val loss上升,val loss一点下降趋势也没有,直接往上走,
已经用了dropout(0.5)也试过用BatchNormalization(),但都没办法完全改善
想知道到底问题出在哪里
训练集和测试集(x,y)大小是(80000, 10, 8) (25000, 10, 8) (80000,) (25000,)

#数据整理
train = values[0:timestep*num]
valid =values[timestep*num:]
time_stamp = 10
scaled_data = scaler.fit_transform(train)
x_train, y_train = [], []
for i in range(time_stamp, len(train)):
    x_train.append(scaled_data[i - time_stamp:i,0:8])
    y_train.append(scaled_data[i, 8])
    # y_train.append(scaled_data[i - time_stamp, 8])
    # y_train.append(scaled_data[i - time_stamp:i, 8])
x_train, y_train = np.array(x_train), np.array(y_train)

scaled_data = scaler.fit_transform(valid)
x_valid, y_valid = [], []
for i in range(time_stamp, len(valid)):
    x_valid.append(scaled_data[i - time_stamp:i,0:8])
    y_valid.append(scaled_data[i, 8])
    # y_valid.append(scaled_data[i - time_stamp, 8])
    # y_valid.append(scaled_data[i - time_stamp:i, 8])
x_valid, y_valid = np.array(x_valid), np.array(y_valid)
print(x_train.shape,x_valid.shape, y_train.shape, y_valid.shape)
#lstm模型
epochs = 60
batch_size = 256
model = Sequential()
model.add(LSTM(units=128, return_sequences=True, input_dim=x_train.shape[-1], input_length=x_train.shape[1]))
model.add(Dropout(0.5))
model.add(LSTM(units=64))
model.add(Dropout(0.5))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='rmsprop')
history =model.fit(x_train, y_train, epochs=epochs, batch_size=batch_size,validation_data=(x_valid,y_valid), verbose=2)

图片说明
上图中蓝色为loss曲线,黄色为val loss

  • 写回答

3条回答 默认 最新

  • weixin_47817205 2022-03-11 15:19
    关注

    楼主解决了吗?我也是这样的问题

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序