基于GRU预测模型
特色:1、单变量,多变量输入,自由切换
2、单步预测,多步预测,自动切换
3、基于Pytorch架构
4、多个评估指标(MAE,MSE,R2,MAPE等)
5、数据从excel文件中读取,更换简单
6、标准框架,数据分为训练集、验证集,测试集
全部完整的代码,保证可以运行的代码看这里。
http://t.csdnimg.cn/El450
!!!如果第一个链接打不开,请点击个人首页,查看我的个人介绍。
(搜索到的产品后,点头像,就能看到全部代码)
黑科技小土豆的博客_CSDN博客-深度学习,32单片机领域博主
GRU(Gated Recurrent Unit)模型是一种改进的循环神经网络(RNN),能够有效地处理长序列数据,可用于处理文本、音频、图像、时间序列等不同类型的数据。相对于传统的RNN,GRU模型通过引入门控机制来减轻了梯度消失和梯度爆炸的问题,具有更好的长期记忆能力。
GRU模型采用了两个门:重置门(reset gate)和更新门(update gate)。重置门用于控制模型是否需要将当前输入与历史状态进行关联,更新门用于控制历史状态的遗忘程度和新状态的加入程度,从而实现动态地“遗忘”和“记忆”历史信息。
GRU模型的优点包括:
- 相较于传统RNN模型,GRU模型能够更好地避免梯度消失和梯度爆炸问题,有效处理长期依赖。
- GRU模型训练速度较快,因为其门控机制降低了所需的参数数量。
因此,我们可以看到本模型采用GRU结构,具有处理长期序列数据、避免梯度消失爆炸问题、训练速度快等优点。
class GRU(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=False)
def forward(self, input_seq):
batch_size, seq_len = input_seq.shape[0], input_seq.shape[1]
h_0 = torch.randn(self.num_layers, batch_size, self.hidden_size).to(self.device)
output, h = self.gru(input_seq, h_0)
return output, h