✅博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 如需沟通交流,扫描文章底部二维码。
(1)切比雪夫距离加权图构建:
从振动信号提取多频带幅值谱作为节点特征,节点间边权重采用切比雪夫距离代替欧氏距离,强化特征空间中的极端差异。图池化采用中心性指标选择重要节点,降低图规模。在齿轮箱故障数据集上,图卷积网络诊断准确率96.3%,比欧氏距离图高4.1%。
(2)动态权重优化的图自编码器异常检测:
仅用正常数据训练图自编码器,重构损失为节点特征重建误差。引入动态权重优化策略,对不同工况样本的损失自动加权,权重与损失变化速度成反比。自动阈值挑选算法基于正常重构损失的最大值设定。在旋转机械异常检测中,F1-score达到0.93,比普通自编码器高0.18。
(3)多目标优化迁移诊断:
源域分类损失、目标域聚类损失与MK-MMD域适应损失联合优化,使用Pareto前沿选择折衷解。此外,引入JS散度为无标签目标域生成伪标签,并采用软标签软化。跨机器迁移(齿轮箱到轴承)实验中,诊断准确率86.5%,比固定权重方法高11.2%,且决策边界附近误判率降低31%。
import torch import torch.nn as nn import torch.nn.functional as F from torch_geometric.nn import GCNConv, GAE from scipy.spatial.distance import chebyshev def build_chebyshev_graph(feature_matrix, k=5): # feature_matrix: (num_nodes, feat_dim) n = feature_matrix.shape[0] adj = np.zeros((n,n)) for i in range(n): dists = [chebyshev(feature_matrix[i], feature_matrix[j]) for j in range(n)] nearest = np.argsort(dists)[:k+1] for j in nearest: adj[i,j] = 1.0 / (dists[j]+1e-8) return adj class DynamicWeightGAE(GAE): def __init__(self, encoder, decoder): super().__init__(encoder, decoder) self.register_buffer('loss_history', torch.zeros(10)) def dynamic_loss_weight(self, epoch, losses): # 根据损失变化速度调整权重 if epoch > 0: change = losses[-1] - losses[-2] weight = 1.0 / (abs(change)+0.01) else: weight = 1.0 return weight class MultiObjectiveLoss(nn.Module): def __init__(self, num_obj=3): super().__init__() self.num_obj = num_obj self.weights = nn.Parameter(torch.ones(num_obj)/num_obj) def forward(self, losses): # 加权和,但权重自适应性学习 return (self.weights * losses).sum() + 0.01 * self.weights.std() class JSPseudoLabelGenerator: def __init__(self, temperature=1.0): self.temp = temperature def generate(self, logits_tgt): # logits_tgt: 目标域模型输出 probs = F.softmax(logits_tgt / self.temp, dim=1) entropy = - (probs * torch.log(probs+1e-8)).sum(dim=1) # 低熵样本认为是可靠伪标签 mask = entropy < entropy.median() pseudo_labels = probs.argmax(dim=1) return pseudo_labels[mask], mask如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇