基于CNN-gMLP模型的光纤震动事件识别研究

本文介绍了一种基于CNN-gMLP模型的光纤震动事件识别方法,该方法利用CNN提取时空特征,并通过gMLP捕捉更长的时序依赖关系,从而提高模型识别性能。

数据集

数据集包含六种类型的事件,总共有15,612个样本。训练数据和测试数据以8:2的比例从数据集中随机抽取,两者之间不存在重叠。每个样本数据是在时域上由10000个点组成和在空域上由12个相邻的空间点组成。

模型架构

import torch
import torch.nn as nn
import torch.nn.functional as F
from gmlp import SpatialGatingUnit ,gMLPBlock,gMLP

class CNN(nn.Module):
    def __init__(self):  # 初始化方法
        super(CNN, self).__init__()  # 初始化方法
        # 第一层卷积层,输入为 (1,10000,12)
        self.conv1 = nn.Sequential(  # input shape (1,10000,12)
            nn.Conv2d(  # 二维卷积层
                in_channels=1,  # input height   # 输入通道数
                out_channels=5,  # n_filters     # 输出通道数(卷积核数量)
                kernel_size=(200, 3),  # filter size  # 卷积核大小
                stride=(50, 1),  # filter movement/step   # 卷积核移动步长
                padding=1,  # 填充大小
            ),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=2, padding=1),  # 最大池化层
        )
        # 第二层卷积层,输入为 (5,99,7)
        self.conv2 = nn.Sequential(  # input shape (5,99,7)
            nn.Conv2d(5, 10, (20, 2), (4, 1), 1),  # output shape   # 输出通道数为10,卷积核大小为(20,2),步长为(4,1),填充为1
            nn.ReLU(),  # activation
            nn.MaxPool2d(kernel_size=2),  # 最大池化层  # output shape (10,10,4)
        )

        self.gmlp = gM1LP(d_model=10, d_ffn=20, seq_len=40, num_layers=6)
              #  gmlp(data).shape

        self.flatten = nn.Flatten()

        self.linear = nn.Linear(in_features=400, out_features=64)
        self.relu = nn.ReLU(inplace=True)
        self.dropout = nn.Dropout(p=0.4)
        self.out = nn.Linear(64, 6)  # 全连接层,输出6个类别

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

    def forward(self, x):  # 前向传播方法
        x = self.conv1(x)  # 通过第一个卷积层序列
        x = self.conv2(x)  # 通过第二个卷积层序列
        # x = x.view(x.size(0), -1)      # 将张量展平
        # 四维转三维
        N, C, H, W = x.shape
        x = x.view(N, C, H * W).permute(0, 2, 1)
        x = self.gmlp(x)
        print(x.shape)
        x = self.flatten(x)#换顺序了 先展平 在输入线性层中
        x = self.linear(x)
        feature = x  # 提取特征
        x = self.relu(x)
        x = self.dropout(x)
        output = self.out(x)  # 通过全连接层得到输出
        return feature, output  # 返回特征和输出

模型优势

CNN后面接gMLP的模型相比只有前两层卷积的模型更好的原因是gMLP能够更好地捕捉时域和空域的信息,从而提高模型的识别性能。gMLP是一种基于gating的多层感知机模型,它的输入是经过卷积层处理后的特征图,输出是经过全连接层得到的最终分类结果。

相比于传统的卷积神经网络,gMLP具有以下优点:

  1. 捕捉更长的时序依赖关系:gMLP通过堆叠多个gMLP块,每个块都包含多个MLP层和一个自注意力机制,可以捕捉更长的时序依赖关系,从而更好地处理时序数据。
  2. 处理空域信息的能力:gMLP不仅可以处理时域信息,还可以同时处理空域信息。通过在输入的空域维度上进行自注意力操作,可以捕捉空域之间的依赖关系,从而更好地处理空域数据。
  3. 强大的非线性拟合能力:gMLP中的MLP层可以通过多层非线性激活函数进行复杂的拟合操作,从而提高模型的拟合能力。

gMLP的输入输出

gMLP的输入是经过卷积层处理后的特征图,其维度为(N, C, H, W),其中N表示样本数,C表示通道数,H和W表示特征图的高度和宽度。gMLP的输出维度与输入维度相同。

论文发表

关于能否使用这个模型发表论文,这取决于你的研究内容和实验结果。如果你的研究内容和实验结果能够证明这个模型在事件识别任务上的有效性,并且在实验中取得了较好的性能,那么你可以考虑使用这个模型发表论文。然而,发表论文不仅仅取决于模型的好坏,还需要考虑实验设计、结果分析等方面的完备性和可信度。建议在论文中详细描述模型的原理和实验结果,并进行与其他方法的对比实验,以充分展示你的研究工作的创新性和有效性。

基于CNN-gMLP模型的光纤震动事件识别研究

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

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