独家原创 | 基于TCN-SENet +BiGRU-GlobalAttention并行预测模型

目录

 往期精彩内容:

创新点:

前言

1 模型整体结构

Global Attention Mechanism

2 多特征变量数据集制作与预处理

2.1 导入数据

2.2 制作数据集

3 基于TCN-SENet  +BiGRU-GlobalAttention并行的高精度预测模型

3.1 定义网络模型

3.2 设置参数,训练模型

4 模型评估与可视化

4.1 结果可视化

4.2 模型评估

4.3 特征可视化

代码、数据如下:


 往期精彩内容:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客

风速预测(一)数据集介绍和预处理-CSDN博客

风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客

风速预测(三)EMD-LSTM-Attention模型-CSDN博客

风速预测(四)基于Pytorch的EMD-Transformer模型-CSDN博客

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型-CSDN博客

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型-CSDN博客

风速预测(七)VMD-CNN-BiLSTM预测模型-CSDN博客

CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)-CSDN博客

CEEMDAN +组合预测模型(CNN-LSTM + ARIMA)-CSDN博客

CEEMDAN +组合预测模型(Transformer - BiLSTM+ ARIMA)-CSDN博客

 CEEMDAN +组合预测模型(CNN-Transformer + ARIMA)-CSDN博客

多特征变量序列预测(一)——CNN-LSTM风速预测模型-CSDN博客

多特征变量序列预测(二)——CNN-LSTM-Attention风速预测模型-CSDN博客

多特征变量序列预测(三)——CNN-Transformer风速预测模型-CSDN博客

多特征变量序列预测(四)Transformer-BiLSTM风速预测模型-CSDN博客

多特征变量序列预测(五) CEEMDAN+CNN-LSTM风速预测模型-CSDN博客

多特征变量序列预测(六) CEEMDAN+CNN-Transformer风速预测模型-CSDN博客

多特征变量序列预测(七) CEEMDAN+Transformer-BiLSTM预测模型-CSDN博客

基于麻雀优化算法SSA的CEEMDAN-BiLSTM-Attention的预测模型-CSDN博客

基于麻雀优化算法SSA的CEEMDAN-Transformer-BiGRU预测模型-CSDN博客

多特征变量序列预测(八)基于麻雀优化算法的CEEMDAN-SSA-BiLSTM预测模型-CSDN博客

多特征变量序列预测(九)基于麻雀优化算法的CEEMDAN-SSA-BiGRU-Attention预测模型-CSDN博客

多特征变量序列预测(10)基于麻雀优化算法的CEEMDAN-SSA-Transformer-BiLSTM预测模型-CSDN博客

超强预测算法:XGBoost预测模型-CSDN博客

VMD + CEEMDAN 二次分解,BiLSTM-Attention预测模型-CSDN博客

VMD + CEEMDAN 二次分解,CNN-LSTM预测模型-CSDN博客

基于麻雀优化算法SSA的预测模型——代码全家桶-CSDN博客

多特征变量序列预测 -TCN 预测模型-CSDN博客

VMD + CEEMDAN 二次分解,CNN-Transformer预测模型-CSDN博客

Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型-CSDN博客

交叉注意力融合时空特征的TCN-Transformer并行预测模型-CSDN博客

风速预测(八)VMD-CNN-Transformer预测模型-CSDN博客

VMD + CEEMDAN 二次分解,Transformer-BiGRU预测模型-CSDN博客

环境:python 3.9  pytorch 1.8 及其以上都可以

模型创新点还未发表,有毕业设计或者发小论文需求的同学必看,模块丰富,创新度高,性能优越!

创新点:

1.利用时间卷积网络(TCN)的一系列时间卷积层,这些卷积层可以有效地捕获不同时间尺度上的序列模式,在TCN的输出上应用SENet模块,用于学习和增强重要特征的表示,提高模型对关键信息的感知能力;

2.通过双向门控循环单元(BiGRU)同时从前向和后向对序列进行建模,以更好地捕获序列中的依赖关系,同时应用全局注意力机制GlobalAttention,对BiGRU的输出进行加权处理,使模型能够聚焦于序列中最重要的部分,提高预测性能;

3. 该创新模型具有不同时间尺度上捕获序列信息以及对序列中不同部分进行重要性加权的能力,在多个数据集上表现出高精度的预测性能!

注意:此次产品,我们还有配套的模型讲解(方便学习网络结构)和参数调节讲解!有毕业设计或者发小论文需求的同学必看,模块丰富,创新度高,性能优越!

同时,代码配套精美的绘图与深度学习预测模型特征重要性可视化实现!

模型训练可视化图:

多特征贡献度可视化分析图:

此分析代码是我们团队原创,如何利用 深度学习 训练好的模型 在对多特征预测任务 中进行特征重要性(贡献度)可视化!(也可以用于其他深度学习模型做特征重要性可视化,代码适用性高)

前言

本文基于前期介绍的电力变压器(文末附数据集),介绍一种基于TCN-SENet  +BiGRU-GlobalAttention并行预测模型,以提高时间序列数据的预测性能。电力变压器数据集的详细介绍可以参考下文:

电力变压器数据集介绍和预处理_ett small数据集-CSDN博客

1 模型整体结构

模型整体结构如下所示:

分支一:通过基于通道注意力机制(SENet)的TCN模型网络,来自适应地调整通道特征的权重,使模型能够自动学习到不同通道的重要性,提取了多特征序列中与预测目标相关的重要空间特征;


分支二:多特征序列数据同时通过基于GlobalAttention优化的BiGRU网络,GlobalAttention是一种用于加强模型对输入序列不同部分的关注程度的机制。在 BiGRU 模型中,全局注意力机制可以帮助模型更好地聚焦于输入序列中最相关的部分,从而提高模型的性能和泛化能力。在每个时间步,全局注意力机制计算一个权重向量,表示模型对输入序列各个部分的关注程度,然后将这些权重应用于 BiGRU 输出的特征表示,通过对所有位置的特征进行加权,使模型能够更有针对性地关注重要的时域特征, 提高了模型对多特征序列时域特征的感知能力;


特征融合:然后两个分支提取的空间特征和全局时域特征通过堆叠融合,使模型能够更好地融合不同层次的特征表示,提高模型性能和泛化能力。

通道注意力机制

Squeeze-and-Excitation Networks

全局注意力机制:

Global Attention Mechanism

多特征变量数据集制作与预处理

2.1 导入数据

2.2 制作数据集

制作数据集与分类标签

3 基于TCN-SENet  +BiGRU-GlobalAttention并行的高精度预测模型

3.1 定义网络模型

注意:输入数据形状为 [64, 7, 7], batch_size=32,7代表序列长度(滑动窗口取值),  维度7维代表7个变量的维度。

3.2 设置参数,训练模型

50个epoch,训练误差极小,多变量特征序列TCN-SENet  +BiGRU-GlobalAttention并行融合网络模型预测效果显著,模型能够充分提取时间序列的空间特征和时序特征,收敛速度快,性能优越,预测精度高,能够从序列时空特征中提取出对模型预测重要的特征,效果明显!

注意调整参数:

  • 可以适当增加TCN层数和隐藏层的维度,微调学习率;

  • 调整BiGRU层数和每层神经元个数,增加更多的 epoch (注意防止过拟合)

  • 可以改变滑动窗口长度(设置合适的窗口长度)

4 模型评估与可视化

4.1 结果可视化

4.2 模型评估

4.3 特征可视化

代码、数据如下:

对数据集和代码感兴趣的,可以关注最后一行

# 加载数据
import torch
from joblib import dump, load
import torch.utils.data as Data
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
# 参数与配置
torch.manual_seed(100)  # 设置随机种子,以使实验结果具有可重复性
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
#代码和数据集:https://mbd.pub/o/bread/mbd-ZZ6UlJxv

  • 37
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TCN-BiGRU-Attention和ResNet融合可以通过以下步骤完成: 1. 导入所需的库和包: ```python import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable ``` 2. 定义TCN-BiGRU-Attention模型和ResNet模型: ```python class TCN_BiGRU_Attention(nn.Module): def __init__(self, input_size, output_size, num_channels, kernel_size, dropout): super(TCN_BiGRU_Attention, self).__init__() self.tcn = TemporalConvNet(input_size, num_channels, kernel_size, dropout=dropout) self.gru = nn.GRU(num_channels[-1], num_channels[-1], bidirectional=True) self.attention = nn.Linear(num_channels[-1] * 2, 1) self.fc = nn.Linear(num_channels[-1] * 2, output_size) def forward(self, inputs): x = self.tcn(inputs.permute(0, 2, 1)).permute(0, 2, 1) x, _ = self.gru(x) attention_weights = F.softmax(self.attention(x).squeeze(-1), dim=1) x = torch.sum(x * attention_weights.unsqueeze(-1), dim=1) x = self.fc(x) return x class ResNet(nn.Module): def __init__(self, input_size, output_size, num_channels): super(ResNet, self).__init__() self.conv1 = nn.Conv1d(input_size, num_channels, kernel_size=3, padding=1) self.bn1 = nn.BatchNorm1d(num_channels) self.relu = nn.ReLU(inplace=True) self.conv2 = nn.Conv1d(num_channels, num_channels, kernel_size=3, padding=1) self.bn2 = nn.BatchNorm1d(num_channels) self.pool = nn.MaxPool1d(kernel_size=2, stride=2) self.fc = nn.Linear(num_channels * 64, output_size) def forward(self, x): x = self.conv1(x) x = self.bn1(x) x = self.relu(x) x = self.conv2(x) x = self.bn2(x) x = self.relu(x) x = self.pool(x) x = x.view(-1, self.num_flat_features(x)) x = self.fc(x) return x def num_flat_features(self, x): size = x.size()[1:] num_features = 1 for s in size: num_features *= s return num_features ``` 3. 定义TCN-BiGRU-Attention模型和ResNet模型的融合模型: ```python class TCN_ResNet(nn.Module): def __init__(self, input_size, output_size, num_channels, kernel_size, dropout): super(TCN_ResNet, self).__init__() self.tcn_bigru_attention = TCN_BiGRU_Attention(input_size, output_size, num_channels, kernel_size, dropout) self.resnet = ResNet(input_size, output_size, num_channels) def forward(self, x): x1 = self.tcn_bigru_attention(x) x2 = self.resnet(x) x = x1 + x2 return x ``` 在这个融合模型中,我们将TCN-BiGRU-Attention模型和ResNet模型分别作为两个子模块,并在融合模型中将它们的输出进行相加,作为最终输出。 4. 实例化TCN_ResNet模型并进行训练、测试等操作。 ```python model = TCN_ResNet(input_size, output_size, num_channels, kernel_size, dropout) ``` 通过以上步骤的操作,即可将TCN-BiGRU-Attention模型和ResNet模型进行融合,获得更好的模型表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

建模先锋

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值