赞
踩
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),越到上层,卷积窗口越大,而卷积窗口中的“空孔”越多。由于扩展的卷积使网络能够处理各种输入,因此可能需要更深入的网络(在反向传播过程中会受到不稳定的梯度影响)。编码器-解码器模块的解决方案可以帮助设计实际的大规模应用。
%% 建立网络结构 -- 残差块 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之前的元素进行卷积。
[1] https://blog.csdn.net/kjm13182345320/article/details/128247182
[2] https://blog.csdn.net/kjm13182345320/article/details/126043107
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。