多输入多输出 | 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

学习小结

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

参考资料

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器学习之心

谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值