生成对抗网络旋转机械小样本故障诊断【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1增强型辅助分类生成对抗网络设计针对旋转机械故障样本稀缺问题提出EACGAN模型。在标准ACGAN基础上嵌入自校正卷积模块该卷积在标准卷积之后使用空间注意力自适应调整特征图增强生成器对故障细微信号的建模能力。损失函数融合了Wasserstein距离、梯度惩罚和谱归一化将WGAN-GP的稳定性优势引入ACGAN。具体地判别器的损失包含真伪判断的Wasserstein损失、类别判断的辅助分类损失和梯度惩罚项。在连续小波变换将一维振动信号转为64x64时频图后EACGAN生成图像与真实图像的FID分数从原始ACGAN的87降至52说明生成质量大幅提升。br2多尺度注意力卷积神经网络诊断模型构建MSACNN作为诊断主干该网络包含三个并行卷积分支卷积核尺寸分别为3、5和7每个分支后接高效通道注意力模块ECA。ECA通过一维卷积快速计算通道权重参数量比SE模块少90%。三个分支的输出沿通道方向拼接后送入全局平均池化和分类层。在CWRU数据集上使用EACGAN生成的每类100个样本补充训练MSACNN的故障识别准确率达到96.8%仅比使用全部真实数据低1.2%。而无数据增强时准确率仅为81%。模型在三种不同的旋转机械数据集轴承、齿轮、转子上均表现出良好的泛化性。br3改进域对抗神经网络无监督迁移诊断对于变工况下无标签目标域的问题提出MDANN模型该模型使用多尺度深度可分离残差网络作为特征提取器替代标准域对抗网络中的普通卷积。每个残差块包含膨胀率为1、2、4的三个并行深度可分离卷积以提取不同尺度的特征。在域判别器中引入局部最大均值差异损失对齐源域和目标域的子领域分布每类故障单独对齐。在CWRU到XJTU-SY的跨数据集迁移任务中MDANN达到87.2%的准确率比基本DANN提高9.5个百分点。对抗训练的训练曲线表明MDANN收敛更平滑最大均值差异值最终降至0.08。import torch import torch.nn as nn import torch.nn.functional as F class SelfCalibratedConv(nn.Module): def __init__(self, in_ch, out_ch, kernel_size3): super().__init__() self.conv nn.Conv2d(in_ch, out_ch, kernel_size, paddingkernel_size//2) self.spatial_attn nn.Sequential( nn.Conv2d(out_ch, 1, kernel_size1), nn.Sigmoid() ) def forward(self, x): out self.conv(x) attn self.spatial_attn(out) return out * attn class EACGAN_Generator(nn.Module): def __init__(self, noise_dim100, num_classes10): super().__init__() self.label_emb nn.Embedding(num_classes, noise_dim) self.fc nn.Linear(noise_dim*2, 4*4*256) self.conv nn.Sequential( nn.ConvTranspose2d(256, 128, 4, stride2, padding1), nn.BatchNorm2d(128), nn.ReLU(), SelfCalibratedConv(128, 64, 3), nn.Upsample(scale_factor2), nn.Conv2d(64, 1, 3, padding1), nn.Tanh() ) def forward(self, noise, labels): label_emb self.label_emb(labels) z torch.cat([noise, label_emb], dim1) z self.fc(z).view(-1, 256, 4, 4) return self.conv(z) class MultiScaleResidual(nn.Module): def __init__(self, in_ch, out_ch): super().__init__() self.conv1 nn.Conv2d(in_ch, out_ch, 3, dilation1, padding1) self.conv2 nn.Conv2d(in_ch, out_ch, 3, dilation2, padding2) self.conv3 nn.Conv2d(in_ch, out_ch, 3, dilation3, padding3) self.eca nn.Conv1d(out_ch*3, out_ch*3, kernel_size3, padding1) def forward(self, x): feat1 self.conv1(x); feat2 self.conv2(x); feat3 self.conv3(x) concat torch.cat([feat1, feat2, feat3], dim1) B, C, H, W concat.shape attn self.eca(concat.mean(dim[2,3]).reshape(B, C, 1)).sigmoid() return concat * attn.reshape(B, C, 1, 1) x def gradient_penalty(critic, real, fake, devicecuda): alpha torch.rand(real.size(0), 1, 1, 1, devicedevice) interpolates (alpha * real (1 - alpha) * fake).requires_grad_(True) d_interpolates critic(interpolates) gradients torch.autograd.grad(outputsd_interpolates, inputsinterpolates, grad_outputstorch.ones_like(d_interpolates), create_graphTrue, retain_graphTrue)[0] grad_norm gradients.view(gradients.size(0), -1).norm(2, dim1) return ((grad_norm - 1) ** 2).mean() ,如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2566976.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!