【LSTM回归预测】TPA-LSTM时间注意力机制长短期记忆神经网络回归预测(多输入单输出)【含Matlab源码 1984期】

⛄一、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄二、时间模式注意力机制的BiLSTM预测

1 BiLSTM原理结构
LSTM于1997年被提出,用于处理长时间序列问题,典型LSTM结构如图2所示。

图2中,xt表示时间序列的当前输入;Ct表示当前LSTM单元的细胞状态,通常只在LSTM内部流动,是LSTM的内部记忆;ht代表当前的编码隐藏状态向量;ft表示遗忘信息的程度;it表示输入信息的保留程度;C t表示当前状态的处理信息。ot表述输出信息的保留程度;tanh表示双曲正切函数。下标t-1代表上一个时刻的LSTM单元所对应的状态量。

LSTM单元有3道门,分别是遗忘门、输入门和输出门。遗忘门可以忘记一定比例的过去信息;输入门将部分当前时刻的输入信息记录进细胞状态;输出门将编码隐藏状态向量和细胞状态有选择性地作为下一个时刻LSTM单元的输入。

当前时刻的输出可能不仅与过去的信息有关,而且还与未来的信息有关。但LSTM无法编码从后向前的信息,而BiLSTM通过将时间序列反向,由正反向LSTM组成,可以更好地捕获双向序列的影响。BiL STM输出表达式为
在这里插入图片描述
式中:ht表示BiLSTM的隐藏状态向量;concat表示在输出维度进行拼接操作;htf,htb分别表示前向和后向LSTM的隐藏状态向量。

BiLSTM结构示意图如图3所示。通过将正向序列反向后作为后向LSTM的输入,可以同时训练两个神经网络。前向LSTM利用过去的信息预测未来的信息,后向LSTM利用未来的信息预测过去的信息,输出结果由这两个网络的输出共同决定。BiLSTM对于同时依赖前后信息的时间序列有着更好的预测效果,因此本文采用BiLSTM神经网络结合风电功率进行双向信息预测。

2 TPA机制
注意力机制模仿人脑,更加注重重要信息,而忽略相对无用的信息,已被广泛应用于自然语言处理、图像及语音识别中,近年来也被广泛应用于各类预测问题。传统注意力机制注重不同时间点的权重分布,在每个时间步只含有一个变量时有较好的效果。但对于区域内的多风电机组功率预测,每个时间步都含有多个变量,各个变量之间可能存在复杂的非线性内在联系,且每个变量序列都有自己的特征和周期,难以单独选取某个时间步作为注意重点。而TPA则由多个一维CNN滤波器从BiLSTM隐藏状态行向量抽取特征,使得模型能够从不同时间步学习多变量之间的互相依赖关系。TPA结构示意图如图4所示。
在这里插入图片描述
图2 典型LSTM结构
在这里插入图片描述
图3 BiL STM结构示意图

对原始时间序列用BiLSTM处理,得到的ht-w—ht表示BiL STM对应不同时间输入得到的隐藏状态向量,w为时间序列长度。定义隐状态矩阵H=(ht-w,ht-w+1,…,ht-1),该隐状态列向量表示同一时间步下BiLSTM内部门神经元参数构成的变量,行向量表示单个变量在所有时间步下的状态。

图4中隐状态矩阵H上的方框表示不同的一维卷积核,利用一维卷积沿着H的m个特征卷积,提取可变信号模型的时间模式矩阵HC
在这里插入图片描述
式中:Cj表示第j个长度为T的滤波器;T表示需要注意的最大长度,通常可取为w;*表示卷积运算。一维滤波器的卷积核有k个,每个卷积核都沿着隐状态矩阵的行向量卷积。该时间模式矩阵包含着不同序列的复杂内在联系以及时序关系,是不同序列复杂非线性关系的高维体现。

定义如下注意力机制函数来计算相关性:
在这里插入图片描述
式中:HiC是HC的行向量;Wa为m×k的权重矩阵;αi为注意力权重;σ表示Sigmoid函数。利用得到的注意力权重αi与HC加权求和,获得注意力向量vt
在这里插入图片描述
式中,n表示输入变量x的特征数。

将vt与ht线性映射后相加获得最终预测值
在这里插入图片描述
式中:yt-1+△表示最终预测值;h′为用于生成最终值的中间变量;Δ表示不同预测任务的预测时间尺度;Wh′,Wh和Wv为对应变量的不同权重矩阵。

传统注意力机制直接对原始数据的时间序列利用CNN进行特征抽取,只能对单一序列的时间特征进行提取,无法兼顾不同序列之间的关联性。而BiLSTM隐状态矩阵的变量则包含了不同时间步下不同序列之间的复杂关系,利用CNN对隐状态矩阵的行向量进行特征抽取,能同时提取时间序列关系与不同变量之间的复杂联系。且注意力向量vt是包含时间信息的时间模式矩阵行向量加权和,因此模型能够从不同时间步选择相关信息。在处理多风机超短期功率预测这类时间步与不同序列存在复杂和非线性的互相依赖问题时,TPA的先进性能展现出了独特的优势。

⛄三、部分源代码

% 数据集 列为特征,行为样本数目
% 数据集 列为特征,行为样本数目

%% 清除命令行窗口和工作区变量
clc
clear
close all
%% 路径设置
addpath(‘./’)

%% 数据导入及处理
load(‘./Train.mat’)
Train.weekend = dummyvar(Train.weekend);
Train.month = dummyvar(Train.month);
Train = movevars(Train,{‘weekend’,‘month’},‘After’,‘demandLag’);
Train.ts = [];

% Train.hour = dummyvar(Train.hour);
%自己主动观察右侧工作区变量格式,对前面数据进行更改替换
Train(1,:) =[];
y = Train.demand;
x = Train{:,2:5};
[xnorm,xopt] = mapminmax(x’,0,1);
[ynorm,yopt] = mapminmax(y’,0,1);
%
% xnorm = [xnorm;Train.weekend’;Train.month’];
%%
% x = x’;
xnorm = xnorm(:,1:1000);
ynorm = ynorm(1:1000);

k = 24; % 滞后长度

% 转换成2-D image
for i = 1:length(ynorm)-k

Train_xNorm(:,i,:) = xnorm(:,i:i+k-1);
Train_yNorm(i) = ynorm(i+k-1);
Train_y(i) = y(i+k-1);

end
Train_yNorm= Train_yNorm’;

ytest = Train.demand(1001:1170);
xtest = Train{1001:1170,2:5};
[xtestnorm] = mapminmax(‘apply’, xtest’,xopt);
[ytestnorm] = mapminmax(‘apply’,ytest’,yopt);
% xtestnorm = [xtestnorm; Train.weekend(1001:1170,:)‘; Train.month(1001:1170,:)’];
xtest = xtest’;
for i = 1:length(ytestnorm)-k
Test_xNorm(:,i,:) = xtestnorm(:,i:i+k-1);
Test_yNorm(i) = ytestnorm(i+k-1);
Test_y(i) = ytest(i+k-1);
end
Test_yNorm = Test_yNorm’;

clear k i x y
%
Train_xNorm = dlarray(Train_xNorm,‘CBT’);
Train_yNorm = dlarray(Train_yNorm,‘BC’);
Test_xNorm = dlarray(Test_xNorm,‘CBT’);
Test_yNorm = dlarray(Test_yNorm,‘BC’);
%% 训练集和验证集划分
TrainSampleLength = length(Train_yNorm);
validatasize = floor(TrainSampleLength * 0.1);
Validata_xNorm = Train_xNorm(:,end - validatasize:end,:);
Validata_yNorm = Train_yNorm(:,TrainSampleLength-validatasize:end);
Validata_y = Train_y(TrainSampleLength-validatasize:end);

Train_xNorm = Train_xNorm(:,1:end-validatasize,:);
Train_yNorm = Train_yNorm(:,1:end-validatasize);
Train_y = Train_y(1:end-validatasize);
%%

%参数设置
inputSize = size(Train_xNorm,1); %数据输入x的特征维度
outputSize = 1; %数据输出y的维度
numhidden_units1=50;

[params,~] = paramsInit(numhidden_units1,inputSize,outputSize); % 导入初始化参数

[~,validatastate] = paramsInit(numhidden_units1,inputSize,outputSize); % 导入初始化参数
[~,TestState] = paramsInit(numhidden_units1,inputSize,outputSize); % 导入初始化参数
% 训练相关参数
TrainOptions;
numIterationsPerEpoch = floor((TrainSampleLength-validatasize)/minibatchsize);
LearnRate = 0.01;
%% Loop over epochs.
figure
start = tic;
lineLossTrain = animatedline(‘color’,‘r’);
validationLoss = animatedline(‘color’,[0 0 0]./255,‘Marker’,‘o’,‘MarkerFaceColor’,[150 150 150]./255);
xlabel(‘Iteration’)
ylabel(‘Loss’)

% epoch 更新
iteration = 0;
for epoch = 1 : numEpochs

[~,state] = paramsInit(numhidden_units1,inputSize,outputSize);       % 每轮epoch,state初始化
disp(['Epoch: ', int2str(epoch)])

% batch 更新
for i = 1 : numIterationsPerEpoch
   
    iteration = iteration + 1;
    disp(['Iteration: ', int2str(iteration)])
    idx = (i-1)*minibatchsize+1:i*minibatchsize;
    
    dlX = gpuArray(Train_xNorm(:,idx,:));
    dlY = gpuArray(Train_yNorm(idx));
    [gradients,loss,state] = dlfeval(@TPAModel,dlX,dlY,params,state);
    
    % L2正则化

% L2regulationFactor = 0.000011;
% gradients = dlupdate( @(g,parameters) L2Regulation(g,parameters,L2regulationFactor),gradients,params);
% gradients = dlupdate(@(g) thresholdL2Norm(g, gradientThreshold),gradients);

    [params,averageGrad,averageSqGrad] = adamupdate(params,gradients,averageGrad,averageSqGrad,iteration,LearnRate);
    
    
    
    % 验证集测试
    if iteration == 1 || mod(iteration,validationFrequency) == 0
        output_Ynorm = TPAModelPredict(gpuArray(Validata_xNorm),params,validatastate);
        lossValidation = mse(output_Ynorm, gpuArray(Validata_yNorm));
    end

⛄三、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 王渝红,史云翔.基于时间模式注意力机制的BiLSTM多风电机组超短期功率预测[J].高电压技术. 2022,48(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MATLAB中实现TPA-LSTM时间注意力机制长短期记忆神经网络)多输入输出,可以按照以下步骤进行操作: 1. 导入所需的MATLAB工具箱。首先,确保安装了Deep Learning Toolbox和Signal Processing Toolbox,这两个工具箱提供了实现神经网络和信号处理的功能。 2. 数据准备。准备输入数据和目标输出数据。例如,如果要对时间序列数据进行预测,则可以将多个时间步的输入数据作为网络的输入,并将预测的下一个时间步数据作为网络的输出。 3. 构建TPA-LSTM网络模型。使用MATLAB的深度学习工具箱,可以使用预定义的Layer函数和Network函数来构建神经网络模型。根据TPA-LSTM的结构,可以使用time-attention layer和LSTM layer构建网络。 4. 网络训练。使用准备的数据集对网络进行训练。可以使用MATLAB的trainNetwork函数来训练网络。在训练过程中,可以设置训练选项,例如训练周数、批处理大小和学习速率等。 5. 网络预测。训练完成后,可以使用训练好的网络模型对新的输入数据进行预测。可以使用MATLAB的predict函数对输入数据进行预测。 6. 评估性能。使用评价指标(例如均方根误差RMSE或平均绝对误差MAE)来评估网络的预测性能。可以使用MATLAB的评价函数来计算这些指标。 7. 调整网络结构和参数。根据实际需求,可以尝试调整TPA-LSTM网络的结构和训练参数,以提高网络性能和预测精度。 最后,要提醒的是,实现TPA-LSTM网络可能更复杂,需要对时间注意力机制LSTM层进行深入了解。为了更好地理解和实现该网络,建议参考相关的论文和文献资料,以便能够正确地实现和应用TPA-LSTM网络。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值