两路共享LSTM时序数据预测实战+界面可视化应用

      在我之前的文章中,已经对LSTM的实际应用有过很多的实践和说明了,今天介绍的LSTM模型跟之前的不同,在以往的时序数据建模中,我们的输入端是只有一个的,也就是说入口处只有“单条通路”,本文提及的两路LSTM,是在输入端就要两个输入,所以称之为两路共享的LSTM模型,话不多说这里先来看下简单的模型结构,如下所示:

     从上面的模型结构图中可以很清晰地看到:入口处有两个维度的数据输入,之后一同进入到LSTM模型中,这里我们为了简单起见,也是为了降低计算量,毕竟深度学习模型是比较耗费资源的,我们在搭建模型的时候只用了一层的LSTM层,当然了,如果你想要使用多层也是可以,在后面再加一层就行了,毕竟Keras提供了很便捷简单的模型搭建方式。

    简单的介绍就到这里了,下面我们开始正式的实践分析,首先简单看下数据集样例,如下所示:

已标记关键词 清除标记
做的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) ``` ![图片说明](https://img-ask.csdn.net/upload/202004/21/1587482938_348380.png) 上图中蓝色为loss曲线,黄色为val loss
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值