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


目录

  • 多输入多输出 | MATLAB实现TCN(时间卷积神经网络)多输入多输出预测
  • 预测效果
  • 基本介绍
  • 模型描述
  • 程序设计
  • 学习小结
  • 参考资料


预测效果

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


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


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


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


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


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

基本介绍

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之前的元素进行卷积。