多输入多输出 | MATLAB实现TCN(时间卷积神经网络)多输入多输出预测
目录
- 多输入多输出 | MATLAB实现TCN(时间卷积神经网络)多输入多输出预测
- 预测效果
- 基本介绍
- 模型描述
- 程序设计
- 学习小结
- 参考资料
预测效果
基本介绍
MATLAB实现TCN(时间卷积神经网络)多输入多输出预测,运行环境Matlab2021b及以上。
1.data为数据集,10个输入特征,3个输出变量。
2.MainTCNM.m为主程序文件,运行环境Matlab2021b及以上。
模型描述
Lea等人(2016)的开创性工作首次提出了用于基于视频的动作分割的时间卷积网络(tns)。这个传统的过程包括两个步骤:第一,使用(通常)编码时空信息的CNN计算低级特征;第二,使用(通常)RNN将这些低级特征输入到一个获取高级时间信息的分类器中。这种方法的主要缺点是它需要两个独立的模型。TCN提供了一种统一的方法来以层次的方式捕获所有两个级别的信息。随着严等人(2020)最近发表的有关TCN用于天气预报任务的研究成果,TCN上甚至出现了有关TCN的讨论。在他们的工作中,进行了TCN和LSTM的对比实验。他们的结果之一是,在其他方法中,TCN在时间序列数据的预测任务中表现良好。TCN的卷积和普通1D卷积最大的不同就是用了扩张卷积(dilated convolutions),越到上层,卷积窗口越大,而卷积窗口中的“空孔”越多。由于扩展的卷积使网络能够处理各种输入,因此可能需要更深入的网络(在反向传播过程中会受到不稳定的梯度影响)。编码器-解码器模块的解决方案可以帮助设计实际的大规模应用。
程序设计
- 完整源码和数据获取方式:私信博主回复MATLAB实现TCN(时间卷积神经网络)多输入多输出预测;
%% 建立网络结构 -- 残差块
for i = 1 : numBlocks
dilationFactor = 2 ^(i - 1); % 膨胀因子
% 建立网络结构
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(2, Name = "add_" + i)]; % 将卷积层加入到网络
% 残差连接 -- 首层
if i == 1
layer = convolution1dLayer(1, numFilters, Name = "convSkip"); % 建立残差卷积层
lgraph = addLayers(lgraph, layer); % 将残差卷积层加入到网络
lgraph = connectLayers(lgraph, outputName, "convSkip"); % 将残差卷积层
else
lgraph = connectLayers(lgraph, outputName, "add_" + i + "/in2"); % 将残差层连接到 addtion 层 输入口2
end
end
学习小结
TCN可以接受任意长度的序列,并将其输出为相同长度。因果卷积在使用一维全卷积网络结构时使用。一个关键的特征是t时刻的输出只与t之前的元素进行卷积。