A382-基于CNN和transformer的小样本故障诊断
导出时间:2025/12/16 16:40:39
1、项目描述
小样本故障分类深度学习模型
对小样本条件下的 故障数据进行分类。结合CNN与Transformer 的思想为基础
2、数据集描述
一、原始数据来源与基本格式说明
本数据集来源于高速数据采集/示波器采样的模拟信号记录文件(CSV 格式)。
每个 CSV 文件包含一次完整的连续采样记录,文件由头部元信息和时序采样数据两部分组成。
数据来自于真实采集,非公开,共13个G,8个故障分类:
采样与记录参数(文件头)
每个 CSV 文件头部包含如下关键信息:
- Record Length (Analog):5,000,000 表示单次记录包含 500 万个连续采样点
- Sample Rate:50,000,000 Hz(50 MHz) 表示信号以 50 MHz 的采样率进行采样
- Vertical Scale (CH3):+10 V 表示通道 CH3 的电压量程
- Vertical Offset (CH3):0 V 表示通道的直流偏置
- Horizontal Scale:0.01 s 表示时间轴的显示尺度(用于示波器显示)
这些信息用于描述数据采集条件,本项目在训练过程中不直接参与模型输入,但用于说明信号的物理意义和采样精度。
二、时序数据结构说明
在文件头之后,CSV 文件进入正式的数据区域,每一行对应一个采样点,主要包含两列:
Second, Volt
示例数据如下:
Second,Volt,
-4.999998E-002, +1.176471E-001
-4.999996E-002, +7.058824E-002
-4.999994E-002, +4.705882E-002
各字段含义说明:
- Second 表示采样点对应的时间戳(单位:秒),为相对时间轴
- Volt 表示该时间点对应的模拟电压值(单位:伏特)
在本项目中:
- 仅使用 Volt 列作为模型输入信号
- 时间列未显式作为特征输入,而是隐含在采样顺序中
三、数据规模与时间长度说明
根据采样参数可以得到:
- 采样率:50 MHz
- 单文件采样点数:5,000,000
因此,单个 CSV 文件对应的时间长度约为:
5,000,000/50,000,000=0.1 s
即:
每个 CSV 文件包含约 100 ms 的高频连续时域信号
3、模型描述
模型总体架构
针对高采样率一维时序信号的故障分类问题,本文提出一种基于卷积神经网络与 Transformer 编码器相结合的端到端分类模型。模型以固定长度的时域信号片段作为输入,通过卷积层提取局部时序特征,再利用 Transformer 捕获长程时间依赖关系,最终实现对不同故障类别的判别。
模型整体结构,主要由以下三部分组成:
- 一维卷积特征提取模块(Convolutional Backbone)
- Transformer 编码模块
- 全连接分类模块
4、运行结果
## 环境依赖
* Python 3.8
* `pandas`, `numpy`, `scikit‑learn` 用于数据处理和评估
可以通过以下命令安装依赖(若您的环境尚未安装 PyTorch,请根据官方指南选择合适版本):
```bash
pip install torch pandas numpy scikit-learn
```
运行命令:
python train.py --data-dir ./小样本故障数据 --epochs 5 --batch-size 32 --seq-length 1024