当前位置:   article > 正文

多输入多输出 | MATLAB实现TCN(时间卷积神经网络)多输入多输出预测

matlab实现tcn(时间卷积神经网络)多输入多输出预测

多输入多输出 | MATLAB实现TCN(时间卷积神经网络)多输入多输出预测

预测效果

1
2
3
3
4
5

基本介绍

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

学习小结

TCN可以接受任意长度的序列,并将其输出为相同长度。因果卷积在使用一维全卷积网络结构时使用。一个关键的特征是t时刻的输出只与t之前的元素进行卷积。

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128247182
[2] https://blog.csdn.net/kjm13182345320/article/details/126043107

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/295803
推荐阅读
相关标签
  

闽ICP备14008679号