多维时序 | Matlab实现BiTCN双向时间卷积神经网络多变量时间序列预测
目录
- 多维时序 | Matlab实现BiTCN双向时间卷积神经网络多变量时间序列预测
- 预测效果
- 基本介绍
- 程序设计
- 参考资料
预测效果
基本介绍
1.Matlab实现BiTCN双向时间卷积神经网络多变量时间序列预测(完整源码和数据)
2.运行环境Matlab2023及以上,excel数据集,多列输入,单列输出,方便替换数据,考虑历史特征的影响;
3.多指标评价,评价指标包括:R2、MAE、MAPE、MSE等,代码质量极高。
程序设计
- 完整程序和数据获取方式资源处下载Matlab实现BiTCN双向时间卷积神经网络多变量时间序列预测。
clc;clear;close all;format compact
tic
clc
clear all
% 创建TCN正向支路
layers = [
convolution1dLayer(filterSize, numFilters, DilationFactor = dilationFactor, Padding = "causal", Name="conv1_" + i) % 一维卷积层
layerNormalizationLayer % 层归一化
spatialDropoutLayer(dropoutFactor) % 空间丢弃层
convolution1dLayer(filterSize, numFilters, DilationFactor = dilationFactor, Padding = "causal") % 一维卷积层
layerNormalizationLayer % 层归一化
reluLayer % 激活层
spatialDropoutLayer(dropoutFactor) % 空间丢弃层
additionLayer(4, Name = "add_" + i)
];
% 添加残差块到网络
lgraph = addLayers(lgraph, layers);
% 连接卷积层到残差块
lgraph = connectLayers(lgraph, outputName, "conv1_" + i);
% 创建 TCN反向支路flip网络结构
Fliplayers = [
FlipLayer("flip_" + i) % 反向翻转
convolution1dLayer(1, numFilters, Name = "convSkip_"+i); % 反向残差连接
convolution1dLayer(filterSize, numFilters, DilationFactor = dilationFactor, Padding = "causal", Name="conv2_" + i) % 一维卷积层
layerNormalizationLayer % 层归一化
spatialDropoutLayer(dropoutFactor) % 空间丢弃层
convolution1dLayer(filterSize, numFilters, DilationFactor = dilationFactor, Padding = "causal") % 一维卷积层
layerNormalizationLayer % 层归一化
reluLayer % 激活层
spatialDropoutLayer(dropoutFactor, Name="drop" + i) % 空间丢弃层
];
% 添加 flip 网络结构到网络
lgraph = addLayers(lgraph, Fliplayers);
% 连接 flip 卷积层到残差块
lgraph = connectLayers(lgraph, outputName, "flip_" + i);
lgraph = connectLayers(lgraph, "drop" + i, "add_" + i + "/in3");
lgraph = connectLayers(lgraph, "convSkip_"+i, "add_" + i + "/in4");
% 残差连接 -- 首层
if i == 1
% 建立残差卷积层
% Include convolution in first skip connection.
layer = convolution1dLayer(1,numFilters,Name="convSkip");
lgraph = addLayers(lgraph,layer);
lgraph = connectLayers(lgraph,outputName,"convSkip");
lgraph = connectLayers(lgraph,"convSkip","add_" + i + "/in2");
else
lgraph = connectLayers(lgraph,outputName,"add_" + i + "/in2");
end
参考资料
[1] https://blog.csdn.net/kjm13182345320/category_11799242.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/124571691