当前位置:   article > 正文

Python环境下基于关系网络的滚动轴承故障诊断方法_轴承故障诊断无样本学习方法

轴承故障诊断无样本学习方法

少样本学习最初是为了模拟小孩子的大脑而设计的,因为小孩子他们能够通过一个或几个事例来认识某样新事物。少样本学习的主要目标是通过先验知识或经验的迭代训练,使模型在少样本的情况下也能有很好的表现。根据上述条件,可以将少样本学习定义为是一种机器学习问题(由E,T,P三个条件指定),其中,T可代指某种分类任务,P可代指准确率等任务的评估标准,E可代指任务相关的数据集,其中包含任务T的监督信息且仅包含有限数量的实例。一般来说,现阶段的少样本研究方法可以分为三大类:(1)基于数据的,它使用先验知识来增强模型的效果。(2)基于模型的,它使用先验知识来减小假设空间的大小。(3)基于算法的,它使用先验知识改变在给定假设空间中的最佳搜索策略的方法。

少样本学习有一个常用定义,如果支持集包含N个故障类别,且每个类别中有K个故障实例,则称此少样本学习任务为N-wayK-shot任务。

基于数据的技术

基于数据的这一类技术旨在使用先验知识来增强训练数据,从而丰富监督信息,通过增强后的数据集可以获得更可靠的经验风险最小化的最佳假设。根据不同的增强方法,这一技术可以分为三种策略:(1)在目标数据集中增加数据,是将单个样本训练成多个不同的样本,使原有数据集中的样本变得多样[。(2)从弱标记、无标记数据集中选择目标标签的样本。(3)从相似数据集中转换数据,对少样本训练数据进行增强。

基于模型的技术

基于模型的方法又可以进一步分为四种类型:多任务学习、度量学习、使用外部存储器学习、生成模型。

基于算法的技术

使用先验知识来帮忙获取参数主要有两种方式:(1)提供一个效果良好的初始化参数。(2)直接学习一个优化器来输出搜索步骤。根据先验知识对搜索策略的影响,基于算法的技术可分为三类。

关系网络(RelationNetwork)具有与关系推理相适应的结构,能够较好地把握其中的关键。人工智能行为的一个基本概念就是能够对实体之间的关系进行推理。关系网络最初用于小样本条件下的图像分类, 与传统深度神经网络需要大量样本训练不同, 该网络能在少量训练样本情况下, 取得较好的图像分类结果。关系网络 包含嵌入模块和关系模块, 是一种端到端的结构。嵌入模块用来提取输入样本的特征; 关系模块用来度量两个特征之间的相似性, 得到关系得分。

鉴于此,提出一种基于关系网络的滚动轴承故障诊断方法,运行环境为Python,可能采用的数据集如下:

数据集A-D由西储大学CWRU轴承数据集而来,数据集E-F由KAt数据集而来,主代码如下:

  1. import numpy as np
  2. import scipy.io as sio
  3. import os
  4. import Relation_Network as RN
  5. import random
  6. def get_data(datapath, is_normalization=False, is_fft=False):
  7. data = sio.loadmat(datapath)
  8. try:
  9. trainX = data['trainX'].astype(np.float32)
  10. testX = data['testX'].astype(np.float32)
  11. trainY = data['trainY']
  12. testY = data['testY']
  13. if trainY.shape[0]>1:
  14. trainY = np.argmax(trainY, axis=1)
  15. testY = np.argmax(testY, axis=1)
  16. else:
  17. trainY = trainY-1
  18. testY = testY-1
  19. except:
  20. X = data['X'].astype(np.float32)
  21. Y = np.argmax(data['Y'], axis=1)
  22. trainX, testX, train_indices, test_indices = utils.split_train_test(X, test_ratio=0.5)
  23. trainY, testY = Y[train_indices], Y[test_indices]
  24. if is_fft:
  25. trainX = np.absolute(np.fft.fft(trainX, axis=1)).astype(np.float32)
  26. testX = np.absolute(np.fft.fft(testX, axis=1)).astype(np.float32)
  27. if is_normalization:
  28. trainX, mu, sigma = utils.zscore(trainX, dim=0)
  29. testX = utils.normalize(testX, mu, sigma)
  30. return trainX, trainY, testX, testY
  31. def get_sample_data(X, Y, num=10, classes=None):
  32. if classes is None: classes = len(np.unique(Y))
  33. Xs, Ys = [], [],
  34. for i in range(classes):
  35. idx = np.where(Y==i)
  36. idx = random.sample(list(idx[0]), num)
  37. Xs.extend(X[idx])
  38. Ys.extend(Y[idx])
  39. return np.array(Xs), np.array(Ys)
  40. # ---------------------------------------------
  41. # few-shot learning with relation network
  42. # ---------------------------------------------
  43. datasets = ['dataA', 'dataB', 'dataC', 'dataD', 'dataE', 'dataF']
  44. datapath = 'datasets/'
  45. for i in [3]:
  46. utils.setup_seed(seed=0)
  47. data = datasets[i]
  48. save_result = f'./results/{data}'
  49. #utils.setup_seed(seed=0)
  50. trainX, trainY, testX, testY = get_data(datapath+data, is_fft=True)
  51. trainX, trainY = get_sample_data(trainX, trainY, num=5, classes=10) # randomly select a small number of training data
  52. ### Define Nets
  53. EM = RN.embedding_module(in_size=trainX.shape[1])
  54. RM = RN.relation_module(in_size=1024)
  55. #EM = RN.embedding_module2()
  56. #RM = RN.relation_module2()
  57. ### Train Nets
  58. model = RN.Relation_net(trainX, trainY, n_epoch=200, is_normalization=True)
  59. model = model.train(EM, RM)
  60. ### ensemble model with update
  61. out = model.test(testX)
  62. result = {}
  63. result['prediction'] = out['prediction']
  64. result['relation'] = out['relation']
  65. result['loss'] = model.loss
  66. result['true_label'] = testY
  67. if not os.path.exists(save_result): os.makedirs(save_result)
  68. sio.savemat(f'{save_result}/result-{model.n_support}shot.mat', result)

结果如下:

完整代码可由知乎学术咨询获得:

Python环境下基于关系网络的滚动轴承故障诊断方法

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/829740
推荐阅读
相关标签
  

闽ICP备14008679号