结合CNN和gMLP的时间序列分类模型

这篇博客文章介绍了一个用于时间序列分类的深度学习模型。该模型结合了卷积神经网络 (CNN) 和门控 MLP (gMLP),旨在有效地捕捉时间序列数据中的空间和时间依赖性。

模型架构

该模型可以分解为以下步骤:

  1. 卷积层 (CNN): 模型的第一层是一个二维卷积层 (self.conv1)。它接受一个形状为 (1, 10000, 12) 的张量作为输入,其中: - 1 代表批大小 - 10000 代表时间序列的长度 - 12 代表每个时间步长的特征维度

    该卷积层有 600 个输出通道,卷积核大小为 (200, 3),步长为 (200, 3)。它旨在从输入时间序列中提取局部特征。

  2. gMLP 模块: 卷积层的输出被送入一个 gMLP 模块 (self.gmlp)。gMLP 模块是一个由 6 个 gMLPBlock 模块组成的堆栈。每个 gMLPBlock 包含两个子模块:

    • 空间门控单元 (SGU): SGU 允许跨通道的特征交互和选择性特征过滤。 - MLP 层: MLP 层对特征表示执行非线性变换。

    gMLP 模块的设计使其能够有效地捕捉时间序列数据中的长期依赖关系。

  3. 平均池化: 在经过 gMLP 模块后,对特征图执行平均池化操作,以减少其维度并保留最重要的信息。

  4. 全连接层: 最后,使用一个全连接层 (self.out) 将学习到的特征映射到 6 个类别。该层产生一个形状为 (1, 6) 的输出张量,表示每个类别的预测概率。

代码解析

让我们逐步浏览代码:pythonimport torchimport torch.nn as nnimport torch.nn.functional as Ffrom gmlp import SpatialGatingUnit, gMLPBlock, gMLP

class CNN(nn.Module): def init(self): # 初始化方法 super(CNN, self).init() # 初始化父类方法 # 第一层卷积层,输入为 (1,10000,12) self.conv1 = nn.Conv2d( # 二维卷积层 in_channels=1, # 输入通道数 out_channels=600, # 输出通道数(卷积核数量) kernel_size=(200, 3), # 卷积核大小 stride=(200, 3), # 卷积核移动步长 )

    self.gmlp = gMLP(d_model=600, d_ffn=1200, seq_len=200, num_layers=6)        self.out = nn.Linear(600, 6)  # 全连接层,输出6个类别

# 定义一个名为CNN的类,继承自PyTorch的nn.Module

def forward(self, x):  # 前向传播方法        x = self.conv1(x)  # 通过第一个卷积层序列        # 四维转三维        N, C, H, W = x.shape        x = x.view(N, C, H * W).permute(0, 2, 1)

    x = self.gmlp(x)        x = x.mean(dim=1)        feature = x        output = self.out(x)  # 通过全连接层得到输出        return feature, output  # 返回特征和输出

这段代码定义了一个名为 CNN 的类,该类继承自 PyTorch 的 nn.Module__init__ 方法初始化模型的各个层,包括卷积层 (self.conv1)、gMLP 模块 (self.gmlp) 和全连接层 (self.out)。

forward 方法定义了数据在模型中的前向传递。它依次执行以下步骤:

  1. 卷积: 输入张量 x 首先经过卷积层 (self.conv1)。2. 形状重排: 卷积层的输出被重塑并转置,为 gMLP 模块做好准备。3. gMLP 处理: 然后,重塑后的张量被送入 gMLP 模块 (self.gmlp)。4. 平均池化: 对 gMLP 模块的输出执行平均池化。5. 全连接层: 平均池化后的特征向量被送入全连接层 (self.out),以产生最终的预测。

该模型返回最终的预测 (output) 以及 gMLP 模块 (feature) 的输出。

结论

这个 CNN 和 gMLP 相结合的模型为时间序列分类提供了一种强大的方法。通过结合 CNN 的局部特征提取能力和 gMLP 捕捉长期依赖关系的能力,该模型可以有效地学习时间序列数据中的复杂模式。该模型的模块化设计也允许根据特定任务需求轻松地进行调整和扩

结合CNN和gMLP的时间序列分类模型

原文地址: http://www.cveoy.top/t/topic/2su 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录