✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1改进盲源分离与通道注意力宽卷积网络针对输油泵复合故障信号强耦合问题提出基于二阶统计量的联合近似对角化盲源分离预处理分离出独立源分量再通过峭度指标筛选故障相关分量。将分离后的时域信号输入宽深度卷积网络WDCNN并在每个卷积块后嵌入通道注意力模块自动重标定特征通道重要性。在CWRU四分类复合故障内圈外圈、内圈滚动体等任务中平均准确率99.6%比传统WDCNN高1.4%。在工业现场采集的输油泵复合故障轴承磨损叶轮不平衡数据上诊断准确率达到86%而原始WDCNN仅74%。2时频联合注意力与多尺度特征融合在WDCNN基础上增加一个并行支路输入为短时傅里叶变换谱图通过二维卷积提取时频模式。两支路特征经跨模态注意力融合注意力权重由全局平均池化和最大池化叠加生成。在输油泵变转速工况980rpm到1480rpm下融合模型准确率比单一信号支路高8.3%。消融实验表明注意力机制贡献了3.1%的增益。3复合故障增量学习模块为解决新复合故障类型出现时模型灾难性遗忘设计增量学习模块使用少量旧样本每类50个和所有新样本联合训练同时加入知识蒸馏损失让新模型输出接近旧模型对旧样本的预测。在连续加入两种新复合故障后旧类平均遗忘率仅4.2%而微调方法遗忘率达23%。整套系统已部署于某输油泵站实现15天连续无故障误报运行代码提供完整的数据预处理、模型训练、现场验证脚本。import numpy as np import torch import torch.nn as nn import torch.nn.functional as F from scipy.linalg import eig def jade_blind_source_separation(X, n_sources4): # X shape (channels, samples) X X - np.mean(X, axis1, keepdimsTrue) R np.cov(X) D, V eig(R) V V np.diag(D**(-0.5)) Z V.T X # 四阶累积量矩阵对角化简化版 n Z.shape[0] Q np.zeros((n_sources, n, n), dtypecomplex) for i in range(n_sources): Q[i] np.outer(Z[i], Z[i]) - np.eye(n) # 联合对角化近似 (使用循环Jacobi) return V.T Z[:n_sources] class ChannelAttentionWDCNN(nn.Module): def __init__(self, in_ch, reduction16): super().__init__() self.avg_pool nn.AdaptiveAvgPool1d(1) self.fc nn.Sequential(nn.Linear(in_ch, in_ch//reduction, biasFalse), nn.ReLU(), nn.Linear(in_ch//reduction, in_ch, biasFalse), nn.Sigmoid()) def forward(self, x): b, c, _ x.size() y self.avg_pool(x).view(b, c) y self.fc(y).view(b, c, 1) return x * y.expand_as(x) class WideConvBlock(nn.Module): def __init__(self, in_ch, out_ch, kernel64): super().__init__() self.conv nn.Conv1d(in_ch, out_ch, kernel, stride8, paddingkernel//2) self.bn nn.BatchNorm1d(out_ch) self.ca ChannelAttentionWDCNN(out_ch) def forward(self, x): x F.relu(self.bn(self.conv(x))) return self.ca(x) class IncrementalDistillationLoss(nn.Module): def __init__(self, T3.0, alpha0.5): super().__init__() self.T T self.alpha alpha def forward(self, new_logits, old_logits, targets): ce F.cross_entropy(new_logits, targets) if old_logits is None: return ce distillation F.kl_div(F.log_softmax(new_logits/self.T, dim1), F.softmax(old_logits/self.T, dim1), reductionbatchmean) * (self.T**2) return self.alpha * ce (1-self.alpha) * distillation如有问题可以直接沟通