wordpress 写博客,seoul什么意思,wordpress图片轮播插件,互助平台网站建设费用top一区轴承诊断迁移学习代码
故障诊断代码 复现
首先使用一维的cnn对源域和目标域进行特征提取#xff0c;域适应阶段#xff1a;将源域和目标域作为cnn的输入得到特征#xff0c;然后进行边缘概率分布对齐和条件概率分布对齐#xff0c;也就是进行JDA联合对齐。
此域适应…top一区轴承诊断迁移学习代码 故障诊断代码 复现 首先使用一维的cnn对源域和目标域进行特征提取域适应阶段将源域和目标域作为cnn的输入得到特征然后进行边缘概率分布对齐和条件概率分布对齐也就是进行JDA联合对齐。 此域适应方法特别适合初学者了解迁移学习的基础知识特别推荐学生问价有优惠 ●数据预处理1维数据 ●网络模型1D-CNN-MMD-Coral ●数据集西储大学CWRU ●准确率99% ●网络框架pytorch ●结果输出损失曲线图、准确率曲线图、混淆矩阵、tsne图 ●使用对象初学者最近在复现轴承故障诊断的迁移学习项目时发现个超适合萌新的实战方案。拿CWRU振动数据做源域一维CNN配合域适配准确率直接干到99%。今天咱们不聊复杂理论直接手把手看代码怎么落地。代码基于PyTorch建议配合Jupyter食用先搞数据预处理。CWRU的振动信号是典型1维时序数据咱们需要做标准化和分帧处理class BearingDataset(Dataset): def __init__(self, data_path, frame_size1024): raw_data np.loadtxt(data_path) self.samples [] for i in range(0, len(raw_data)-frame_size, frame_size//2): frame raw_data[i:iframe_size] frame (frame - np.mean(frame)) / np.std(frame) # 标准化 self.samples.append(torch.FloatTensor(frame))网络结构是核心亮点把MMD和CORAL嵌入到CNN里实现联合适配。看这个适配层的实现class DomainAdapter(nn.Module): def __init__(self, feat_dim): super().__init__() self.avg_pool nn.AdaptiveAvgPool1d(1) # 全局特征压缩 def forward(self, source, target): src_feat self.avg_pool(source).squeeze() tgt_feat self.avg_pool(target).squeeze() # 计算MMD距离 mmd_loss torch.mean((src_feat - tgt_feat) ** 2) # 计算CORAL距离 cov_src torch.cov(src_feat.T) cov_tgt torch.cov(tgt_feat.T) coral_loss torch.norm(cov_src - cov_tgt, pfro) return 0.5*mmd_loss 0.5*coral_loss # 混合适配损失这里用自适应池化把特征压缩到同一维度混合MMD最大均值差异和CORAL相关性对齐两种度量比单用某一种适配效果更好。训练循环要同时优化分类和域适配for epoch in range(100): model.train() for (x_src, y_src), (x_tgt, _) in zip(src_loader, tgt_loader): # 特征提取 feat_src model.feature(x_src) feat_tgt model.feature(x_tgt) # 计算三部分损失 cls_loss F.cross_entropy(model.classifier(feat_src), y_src) adapt_loss domain_adapter(feat_src, feat_tgt) total_loss cls_loss 0.3*adapt_loss # 超参需要微调 optimizer.zero_grad() total_loss.backward() optimizer.step()注意这里目标域数据没有标签但源域数据正常计算分类损失这种半监督训练正是迁移学习的精髓。可视化部分用t-SNE看特征分布变化def plot_tsne(features, labels, epoch): tsne TSNE(n_components2) reduced tsne.fit_transform(features) plt.scatter(reduced[:,0], reduced[:,1], clabels, alpha0.6, cmaptab10, edgecolorsw) plt.title(fEpoch {epoch} Feature Distribution)对比训练初期和后期目标域特征会逐渐与源域重叠说明域适配确实生效。这种可视化对理解迁移过程非常重要。项目亮点总结数据预处理简单不需要复杂时频变换混合适配策略比单一方法鲁棒准确率曲线、混淆矩阵、t-SNE三位一体可视化单卡GPU就能跑学生党友好避坑指南当目标域数据量过少时CORAL容易过拟合建议适当降低其损失权重。另外一维CNN的kernel_size建议设为7-15太小容易丢失振动信号的长程特征。完整代码已打包包含超参数配置说明需要的小伙伴评论区留言。下期预告不写代码也能玩的迁移学习可视化工具敬请期待