开始填坑
MATLAB统计机器学习,深度学习,计算机视觉 - 哥廷根数学学派的文章 - 知乎 MATLAB统计机器学习,深度学习,计算机视觉 - 知乎
之前写过在使用深度学习对机械系统或电气系统进行故障诊断时,如果没有大量的故障样本,可以使用Simulink 生成故障样本数据,还可以使用数字孪生技术等等
深度学习故障诊断之-使用 Simulink 生成故障数据 - 哥廷根数学学派的文章 - 知乎 深度学习故障诊断之-使用 Simulink 生成故障数据 - 知乎
本次讲解如何使用条件生成对抗网络CGAN生成泵流量信号
完整代码链接
生成对抗网络 (GAN) 可用于生成近似真实数据的数据。 当模拟计算成本较高或实验成本较高时,GAN 非常有用。 条件 GAN(CGAN)可以在训练过程中使用数据标签来生成属于特定类别的数据。注意:本例将泵Simulink模型获得的模拟信号视为“真实”数据,当作CGAN 的训练数据集。 CGAN 使用一维卷积网络,此外本例使用主成分分析 (PCA) 直观地比较生成信号和真实信号的特征。三缸柱塞泵的Simulink模型如下,来源于mathworks大佬。
再次强调:本例将泵Simulink模型获得的模拟信号视为“真实”数据,当作CGAN 的训练数据集
下图为Simulink模型生成的“真实”泵流量信号
接下来步入正题,CGAN 由两个作为“对手”一起训练的网络组成。
生成器网络—给定一个标签和随机数组作为输入,该网络生成与对应于相同标签的训练数据相同结构的数据。 生成器的目标是生成鉴别器分类为“真实”的标记数据。
判别器网络—给定一批标记数据,其中包含来自训练数据和生成器生成数据的观察结果,该网络尝试将观察结果分类为“真实”或“生成”。 判别器的目标是在给定批次的真实和生成的标记数据时不被生成器“愚弄”。
导入数据
模拟数据由 Simulink 模型生成。 Simulink 模型对3种类型的故障进行建模:气缸泄漏、进气口阻塞和轴承故障。 该数据集包含 1575 个泵输出流量信号,其中 760 个为健康信号,815 个为单个故障、两个故障的组合或三个故障的组合。 每个信号有 1201 个采样点,采样频率为 1000 Hz。.
加载训练数据集并将信号进行标准化
load(fullfile(saveFolder,'simulated.mat')) % 导入数据集
meanFlow = mean(flow,2);
flowNormalized = flow-meanFlow;
stdFlow = std(flowNormalized(:));
flowNormalized = flowNormalized/stdFlow;
健康信号标记为 1,故障信号标记为 2。
定义生成器网络,不再赘述,很容易看懂
<