0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用MATLAB实现一维时间卷积网络

MATLAB 来源:MATLAB 2025-03-07 09:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一维卷积是对一维输入数据应用滑动卷积来学习特征,其主要作用是对序列数据做局部特征提取。基于提取的特征可以进一步构建分类或回归网络。一维卷积的操作涉及卷积大小、步长以及填充形式和填充值。本文对一维卷积操作进行介绍,包括一维扩展卷积和一维因果卷积,以及 MATLAB 对一维卷积的支持情况。在最后通过一个实例演示如何在 MATLAB 中将一维卷积和 LSTM 结合构建分类网络,实现基于传感器数据的故障诊断。

1. 一维卷积

一维卷积操作过程如图1所示。图1中显示的卷积核的大小为 3(1×3的向量),滑动的步长(stride)为 2,采用 0 值填充(padding),填充可以在序列的最左侧,或者两侧填充,这需要根据具体需求决定。

cd92a03c-f9aa-11ef-9310-92fbcf53809c.png

图1 .一维卷积基本操作

基本的一维卷积操作过程中,卷积核的中心位置对齐输入序列的每个位置,卷积核沿着输入序列滑动,并在输入序列的每个位置计算加权和(步长等于 1)。默认设置下,卷积操作会在输入序列的两端进行填充(padding),输出结果的长度可以由以下公式计算:

cdaace32-f9aa-11ef-9310-92fbcf53809c.png

其中:l 表示输出序列长度,i 表示输入序列长度;p 表示填充数据的总长度;f 表示卷积核长度;s 表示步长;floor 表示计算结果的下取整。

2. 一维因果卷积

因果卷积是一类特殊的一维卷积。基本的卷积操作会考虑输入位置的上下文信息,其不仅考虑位置之前的数据,还要考虑之后的数据。而因果卷积在处理输入序列的每个位置时,只依赖于当前及之前的位置信息,这在应对时间序列输入时,避免了信息泄露,即未来的信息不回影响过去的数据。因果卷积的卷积核最右侧位置对齐输入序列的开始位置,并根据步长滑动卷积核,因此输入序列通常会在开始部分进行填充。

cdc15f30-f9aa-11ef-9310-92fbcf53809c.png

图2 一维因果卷积操作过程

在实际应用中,一维卷积往往面对的是多个传感器输入序列,即多通道(每个通道对应一个传感器序列)输入,卷积核自身带有“厚度”,同时与所有通道上的数据做卷积后输出结果,因而一个卷积核合并多个通道的数据形成一个局部特征数据,如图3所示。

cdd85096-f9aa-11ef-9310-92fbcf53809c.png

图3 一维多通道卷积

3. MATLAB 中的一维卷积

MATLAB 提供了一维卷积层 convolution1dLayer 实现对输入序列的卷积操作。其有多个属性用来设置卷积操作的过程,例如 FilterSize 用于定义卷积核的大小,NumFilters 定义卷积核的数量(卷积输出的通道数), Stride定义步长,等等。

cdf2d290-f9aa-11ef-9310-92fbcf53809c.png

convolution1dLayer 的属性 Padding 有两个值:same 和 causal。same 实现了一维卷积标准操作,在输入序列的两侧做填充,输出序列的长度等于ceil(输入序列长度/Stride),ceil是MATLAB的内置上取整函数。causal 实现因果卷积,只在输入序列左侧做填充。对于时间序列数据,causal 只关注当前位置即之前位置上的数据。

MATLAB 的 convolution1dLayer 也支持扩张卷积。扩展卷积(也称为空洞卷积,Dilated Convolution)是一种卷积操作,旨在增加卷积核的感受野,而不增加计算复杂度。通过在卷积核元素之间插入空洞(即零),扩展卷积可以在不增加参数数量的情况下捕获更大范围的输入信息。MATLAB 通过 convolution1dLayer 的属性 DilationFactor (膨胀系数)设置扩张卷积(也称空洞卷积),其数值的大小决定了卷积核元素之间空洞的大小。当 DilationFactor 的值为 1 时,卷积核元素之间不插入任何零值,与普通卷积相同。DilationFactor 值为 2 表示在卷积核元素之间插入 1 个零,为 3 表示插入 2 个零,依此类推。扩张卷积通过插入 0 值的方式扩大感受野,而参数数量并没有增加,进而可以提高计算效率。

针对时间序列数据,扩展卷积与因果卷积配合使用构建时间卷积网络 (Temporal Convolutional Network, TCN)。在MATLAB中,通过设置 convolution1dLayer 的 Padding 属性值为 causal,同时设置 DilationFactor 的值可以构建时间卷积网络。而此时对输入序列做左侧填充的大小为:(FilterSize - 1) .* DilationFactor。扩展卷积操作扩大了卷积层的输出位置的感受野,随着卷积层的增加,输出位置的感受野不断扩大。图4显示了在不增加参数数量(卷积核大小)的情况下,扩展卷积的膨胀系数(DilationFactor)呈指数增加,每个输出位置的感受野不断扩大。这使得网络能够捕获更大范围的局部信息。

ce153c4a-f9aa-11ef-9310-92fbcf53809c.png

图4 时间卷积网络的输出位置的感受野

4. 实现基于传感器数据的故障诊断

卷积网络的计算比循环网络更快,因为卷积操作可以通过单一运算来处理输入。相反,循环操作必须对输入的时间步进行迭代,进而其计算比较耗时。然而,循环网络时间步迭代使其能够捕获数据在时间上的依赖关系,可以学习到时间步之间的长期相关性,而卷积操作只是提取数据在局部的特征,并没有考虑时间上的关系。对于动态系统,往往存在着时间步之间的关系,识别这些关系对于诊断故障和预测寿命是非常重要的。因此,将一维卷积和循环网络联合使用。通过卷积提取输入序列的局部特征,减少序列长度,降低计算量;再通过循环网络捕获输入序列时间上的依赖关系,提高网络精度。这种结合在减少计算量的同时,也可以保证模型的精度。

本文将卷积网络和循环网络联合使用构建分类模型,实现基于传感器数据的故障诊断。利用上文提到的时间卷积网络提取输入数据的局部特征,并将由这些局部特征组成的新的序列数据输入 LSTM 网络捕获时间上的依赖关系,最后通过全连接网路输出故障类型,网络结构如图 5 所示。

ce31a02e-f9aa-11ef-9310-92fbcf53809c.png

图5 TCN+LSTM的分类网络

图 5 显示的是使用 Deep Network Designer App 构建分类网络,其中一维卷积层 convolution1dLayer 采用扩展卷积核因果卷积。通过逐层增加 DilationFactor 的值来扩大感受野;并且每个卷积层的 Padding 参数都设置为 causal。lstmLayer 的隐藏单元向量维度设置为 64,outputMode 设置为 sequence,因此,lstmLayer 层的输出是一个隐藏状态向量序列,并且序列中的每个向量的维度为 64。在 lstmLayer 之后使用 globalMaxPooling1dLayer 层对输出结果在时间方向上做最大值池化,进而其输出结果为一个 64 维的向量。最后我们使用两个全连接层做线性变化,最终输出为 3 维的向量对应于故障种类。

使用在传感器数据的深度学习模型应用(一) – Transformer提到的数据集,该数据集,并直接在原始信号数据上做模型训练。原始信号数据是具有 146484 采样点一维数据。数据集进步划分为训练集和测试集,如下所示:

ce557c4c-f9aa-11ef-9310-92fbcf53809c.png

ce70f0f8-f9aa-11ef-9310-92fbcf53809c.png

训练集(上)和测试集(下)

进一步将训练集再划分为训练集和验证集,并在模型训练过程中进行验证,以提高模型的泛化能力。

ce8af3f4-f9aa-11ef-9310-92fbcf53809c.png

cea44700-f9aa-11ef-9310-92fbcf53809c.png

训练集(上)和验证集(下)

模型训练过程,MATLAB 提供了超参数选项实现模型的进一步调优,而超参数选项是通过 trainingOptions 函数设置的,包括初始学习速率、学习速率衰减策略、minibatch 大小、训练执行环境(GPUCPU)、训练周期等等。经过 100 个 Epoch 训练后,模型的精度以及在测试集上的测试结果如图 6 所示:

ceb9e25e-f9aa-11ef-9310-92fbcf53809c.png

ced95648-f9aa-11ef-9310-92fbcf53809c.png

图6 模型训结果(上)和测试集精度(heatmap)(下)

5. 总结

本文通过引入一维卷积对原始传感器数据进行直接处理,实现了模型训练过程的特征提取,节省了数据前处理中的特征提取工作。在卷积层提取的特征数据上应用LSTM层捕获数据的动态特征。这种网络结构充分发挥了各自网络层特点,进而实现基于动态数据的故障诊断。本文目的是为读者在序列数据分析方面提供一种思路,所使用的代码可以通过下方二维码扫码下载。文中的模型设计和训练还有可以优化地方,仅为读者提供参考,也欢迎大家做进一步模型结构调整和精度提升。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2574

    文章

    54382

    浏览量

    786116
  • matlab
    +关注

    关注

    189

    文章

    3018

    浏览量

    237604
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123909
  • 卷积网络
    +关注

    关注

    0

    文章

    43

    浏览量

    3161

原文标题:传感器数据的深度学习模型应用(三) —— 一维时间卷积网络

文章出处:【微信号:MATLAB,微信公众号:MATLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FFT与DFT计算时间的比较及圆周卷积代替线性卷积的有效性实

    实现线性卷积的原理二 实验内容及要求1.对N=2048或4096点的离散时间信号x(n),试用Matlab语言编程分别以DFT和FFT计算N个频率样值X(k), 比较两者所用
    发表于 12-29 21:52

    毕业设计_分段卷积MATLAB仿真与DSP实现

    本帖最后由 mr.pengyongche 于 2013-4-30 03:12 编辑 毕业设计_分段卷积MATLAB仿真与DSP实现  常用的线性卷积方法要求两个输入序列的持续
    发表于 12-25 13:43

    卷积神经网络卷积的处理过程

    。本文就以卷积神经网络为例谈谈怎么来进步优化卷积神经
    发表于 12-23 06:16

    《 AI加速器架构设计与实现》+第卷积神经网络观后感

    《 AI加速器架构设计与实现》+第卷积神经网络观感    在本书的引言中也提到“图胜千言”,读完第
    发表于 09-11 20:34

    卷积、二卷积、三卷积具体应用

    由于计算机视觉的大红大紫,二卷积的用处范围最广。因此本文首先介绍二卷积,之后再介绍
    发表于 05-08 10:29 5407次阅读
    <b class='flag-5'>一</b><b class='flag-5'>维</b><b class='flag-5'>卷积</b>、二<b class='flag-5'>维</b><b class='flag-5'>卷积</b>、三<b class='flag-5'>维</b><b class='flag-5'>卷积</b>具体应用

    卷积神经网络的权值反向传播机制和MATLAB实现方法

    降低了网络需要训练的数量级。本文以MINST手写体数据库为训练样本,讨论卷积神经网络的权值反向传播机制和MATLAB实现方法;对激活函数t
    发表于 12-06 15:29 14次下载

    连续时间系统时域分析的MATLAB实现

    掌握应用 MATLAB 实现对线性时不变连续时间系统的时域分析,即熟悉应用 MATLAB 实现微分方程的求解、连续
    发表于 11-10 08:00 0次下载
    连续<b class='flag-5'>时间</b>系统时域分析的<b class='flag-5'>MATLAB</b><b class='flag-5'>实现</b>

    种轻量级时间卷积网络设计方案

    时间卷积网络(TCN)在处理时间序列预测问题时存在计算量大和参数冗余问题,导致其难以应用于存储空间和计算能力受限的手机、平板电脑、笔记本电脑等移动终端。为此,设计
    发表于 03-22 16:04 6次下载
    <b class='flag-5'>一</b>种轻量级<b class='flag-5'>时间</b><b class='flag-5'>卷积</b><b class='flag-5'>网络</b>设计方案

    MATLAB实现卷积神经网络CNN的源代码

    MATLAB实现卷积神经网络CNN的源代码
    发表于 04-21 10:15 16次下载

    卷积神经网络算法代码matlab

    卷积神经网络算法代码matlab 卷积神经网络(Convolutional Neural Network,CNN)是
    的头像 发表于 08-21 16:50 1826次阅读

    cnn卷积神经网络matlab代码

    的。CNN最初是应用于图像识别领域的,以其识别准确率高和泛化能力强而备受瞩目。本篇文章将以Matlab编写的CNN代码为例,最为详尽地介绍CNN的原理和实现方法。 、CNN的基本原理 CNN
    的头像 发表于 08-21 17:15 2025次阅读

    什么是卷积神经网络?如何MATLAB实现CNN?

    卷积神经网络(CNN 或 ConvNet)是种直接从数据中学习的深度学习网络架构。 CNN 特别适合在图像中寻找模式以识别对象、类和类别。它们也能很好地对音频、
    发表于 10-12 12:41 2372次阅读
    什么是<b class='flag-5'>卷积</b>神经<b class='flag-5'>网络</b>?如何<b class='flag-5'>MATLAB</b><b class='flag-5'>实现</b>CNN?

    卷积神经网络的原理与实现

    1.卷积神经网络(Convolutional Neural Networks,简称CNN)是种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。 卷积神经
    的头像 发表于 07-02 16:47 1670次阅读

    MATLAB如何使用训练好的网络

    实现和应用变得简单易行。 MATLAB神经网络概述 MATLAB提供了多种神经网络架构,如前馈神经网络
    的头像 发表于 07-03 10:06 2242次阅读

    卷积神经网络实现原理

    卷积神经网络(Convolutional Neural Networks,简称CNN)是种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。本文将详细介绍卷积神经
    的头像 发表于 07-03 10:49 1729次阅读