基于BIGRU时间序列预测 python程序

 基于BIGRU时间序列预测 python程序

特色:1、单变量,多变量输入,自由切换

          2、单步预测,多步预测,自动切换

          3、基于Pytorch架构

          4、多个评估指标(MAE,MSE,R2,MAPE等)

           5、数据从excel文件中读取,更换简单

          6、标准框架,数据分为训练集、验证集,测试集

 全部完整的代码,保证可以运行的代码看这里。

http://t.csdn.cn/obJlChttp://t.csdn.cn/obJlC

  !!!如果第一个链接打不开,请点击个人首页,查看我的个人介绍。

(搜索到的产品后,点头像,就能看到全部代码)

黑科技小土豆的博客_CSDN博客-深度学习,32单片机领域博主

BIGRU(Bidirectional Gated Recurrent Unit)是一种双向循环神经网络(BiRNN)。该模型在GRU模型的基础上,增加了一个反向的GRU网络,以考虑历史信息的前向和后向两个方向,从而更好地处理时间序列数据。

双向循环神经网络将序列数据的前向和后向信息结合起来,能更全面地理解数据的上下文含义,进而提高模型的预测性能。在BIGRU模型中,通过前向GRU和反向GRU对原始数据进行操作,并把对应的状态拼接在一起,得到最终的输出,从而增加了模型的学习能力。

BIGRU模型的优点包括:

  1. 通过利用前向和后向两个方向的历史信息,能够更全面地理解时间序列数据的上下文含义,提高数据的表征能力和预测性能。
  2. 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

猜你喜欢

转载自blog.csdn.net/qq_41728700/article/details/129845000
今日推荐