基于BIGRU时间序列预测 python程序
特色:1、单变量,多变量输入,自由切换
2、单步预测,多步预测,自动切换
3、基于Pytorch架构
4、多个评估指标(MAE,MSE,R2,MAPE等)
5、数据从excel文件中读取,更换简单
6、标准框架,数据分为训练集、验证集,测试集
全部完整的代码,保证可以运行的代码看这里。
http://t.csdnimg.cn/El450
!!!如果第一个链接打不开,请点击个人首页,查看我的个人介绍。
(搜索到的产品后,点头像,就能看到全部代码)
黑科技小土豆的博客_CSDN博客-深度学习,32单片机领域博主
BIGRU(Bidirectional Gated Recurrent Unit)是一种双向循环神经网络(BiRNN)。该模型在GRU模型的基础上,增加了一个反向的GRU网络,以考虑历史信息的前向和后向两个方向,从而更好地处理时间序列数据。
双向循环神经网络将序列数据的前向和后向信息结合起来,能更全面地理解数据的上下文含义,进而提高模型的预测性能。在BIGRU模型中,通过前向GRU和反向GRU对原始数据进行操作,并把对应的状态拼接在一起,得到最终的输出,从而增加了模型的学习能力。
BIGRU模型的优点包括:
- 通过利用前向和后向两个方向的历史信息,能够更全面地理解时间序列数据的上下文含义,提高数据的表征能力和预测性能。
- BIGRU模型能够显著地减少GRU模型在高维数据上的计算开销,尤其是在处理长序列数据时,能够提高训练效率。
因此,可以看出BIGRU模型具有双向循环、学习能力强、训练速度快等优点,是一种适用于时间序列预测的有效模型。
class BiGRU(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, batch_size, device="cpu"):
super().__init__()
self.device = device
self.input_size = input_size
self.hidden_size = hidden_size
self.num_layers = num_layers
self.batch_size = batch_size
self.gru = nn.GRU(self.input_size, self.hidden_size, self.num_layers, batch_first=True, bidirectional=True)
def forward(self, input_seq):
batch_size, seq_len = input_seq.shape[0], input_seq.shape[1]
h_0 = torch.randn(self.num_layers*2, batch_size, self.hidden_size).to(self.device)
output, h = self.gru(input_seq, h_0)
return output, h