最早接触DeepAR模型是2020年在简书看到的一篇大佬的博客:
https://www.jianshu.com/p/8a900b9ad3d3
这位大佬非常详细的讲解了Deep AR的代码实战操作。受大佬的启发,并结合在github上面的搜集的资料,最终本人完成了对Deep AR的探究,并且成功应用于PHM 2012轴承的RUL( ps:不要问我文章在哪,我没写也没投。主要是Deep AR有较大的局限性,同时我有其他的研究方向)。后续我会一一道来。
模型代码:
在大佬的csdn也有:
https://blog.csdn.net/weixin_45073190/article/details/104951504
我这里就只添加一个GaussianLoss,因为大佬的是log_gaussian_loss,有想练练手的可以尝试这两种损失函数
import tensorflow as tf
from tensorflow.keras.layers import (Input, LSTM, LSTMCell)
class DeepAR(tf.keras.layers.Layer):
DeepAR 模型
def __init__(self, lstm_units):
super().__init__()
self.lstm_units = lstm_units
self.lstm_1 = tf.keras.layers.LSTM(self.lstm_units,return_sequences=True )
self.lstm_2 = tf.keras.layers.LSTM(self.lstm_units,return_sequences=False)
self.dense_mu = tf.keras.layers.Dense(1,activation='sigmoid')
self.dense_sigma = tf.keras.layers.Dense(1,activation="softplus")
def call(self, inputs, initial_state=None):
outputs = self.lstm_1(inputs)
outputs = self.lstm_2(outputs)
mu = self.dense_mu(outputs)
sigma = self.dense_sigma(outputs)
return [mu, sigma]
class GaussianLoss(object):
def __init__(self):
def __call__(self, y_true, y_pred, sigma):
return tf.reduce_mean(0.5 * tf.math.log(sigma) +
0.5 * tf.math.divide(tf.math.square(y_true-y_pred),sigma))+1e-6+6
模型打印:
Model: "model_5"
_________________________________________________________________
Layer (type) Output Shape Param
=================================================================
input_6 (InputLayer) [(None, 36, 128)] 0
_________________________________________________________________
deep_ar_5 (DeepAR) [(None, 1), (None, 1)] 11426
=================================================================
Total params: 11,426
Trainable params: 11,426
Non-trainable params: 0
_________________________________________________________________
整体的训练效果一般,并且难以充分训练。再来看看测试集轴承,(测试是full,不是截断的):
轴承1-3
轴承1-4
轴承1-5
轴承1-6
轴承1-7
首先通过一个神经网络模型得到每个轴承的健康指标HI,然后采用Deep AR对测试集(截断的数据)健康指标进行预测
轴承1-3
轴承1-6
总体上来讲,Deep AR可能对数据量有一定的要求,另外,其运行过程的损失函数不稳定,波动很大,不像常规的loss保持下降趋势。
基于Deep AR模型的轴承RUL预测Deep AR模型1.直接将特征输入到Deep AR模型进行RUL预测2.将Deep AR应用于HI的后处理总结Deep AR模型最早接触DeepAR模型是2020年在简书看到的一篇大佬的博客:https://www.jianshu.com/p/8a900b9ad3d3这位大佬非常详细的讲解了Deep AR的代码实战操作。受大佬的启发,并结合在github上面的搜集的资料,最终本人完成了对Deep AR的探究,并且成功应用于PHM 2012轴承的RUL( ps:不
这项工作介绍了 [1] 中提出的 LCI-ELM 的新改进。 新的贡献集中在训练模型对更高维度的“时变”数据的适应性上。 使用C-MAPSS数据集对提出的算法进行了研究[2]。 PSO[3] 和 R-ELM[4] 训练规则被整合到了这个任务中。 拟议算法和用户指南的详细信息可在: https : //www.researchgate.net/publication/337945405_Dynamic_Adaptation_for_Length_Changeable_Weighted_Extreme_Learning_Machine
[1] YX Wu、D. Liu 和 H. Jiang,“长度可变增量极限学习机”,J. Comput。 科学技术,卷。 32号3,第 630-643 页,2017 年。 [2] A. Saxena、M. Ieee、K. Goebel、D. Simon 和
时间序列预测算法——DeepAR
DeepAR概述
DeepAR是亚马逊提出的一种针对大量相关时间序列统一建模的预测算法,该算法采用了深度学习的技术,通过在大量时间序列上训练自回归递归网络模型,可以从相关的时间序列中有效地学习全局模型,并且能够学习复杂的模式,例如季节性、数据随时间的不确定性增长,从而对各条时间序列进行预测。
DeepAR原理和实现过程
上图左边是模型的训练过程,右边是模型的预测...
轴承剩余寿命预测项目(projectRUL)
使用PHM2012大赛的轴承数据库,研究如何使用深度学习算法对滚珠轴承进行剩余寿命预测的试错项目
to prediction the remain useful life of bearing based on 2012 PHM data
2021-01-17 最后更新总结(Final Update)
碎碎念:这个项目一开始只是一个默默无名的研究生用来记录自己在深度学习算法上的学习过程,所以本质上就是一个没啥卵用的项目。结果项目停止更新的两年多总有人会给我发邮件问这个项目,(也有可能相关方向的代码是真的少,所以找到这里。。。),而且我也不做相关方向了,所以做一个总结。
项目里面的深度模型基本都能运行,但是效果都不行!!(仅供新人学习参考)
项目里面我自我感觉最好的代码是dataset.py,这是将PHM2012、德国帕德博恩大学的数据库以及cw
Management(PHM)(由我和Yongyu合作开发),位于中国杭州的AIMS。
该软件由MATLAB开发,仅用于研究目的。
另外,该软件使用NASA提供的轴承振动信号数据集。
ToolBox的目录结构如下所示:
MATLAB源代码。
数据1st_test_mat-NASA轴承振动数据SVM_sourcedata-SVM模块的数据集
BearFreq.mat
功能_全部
该软件使用的一些图像
软件保存的数据
Sutrisno E, Oh H, Vasan A S S, et al. Estimation of remaining useful life of ball bearings using data driven methodologies[C]// Prognostics and Health Management. IEEE, 2012:1-7.
IEEE 2012 PHM数据挑战赛比赛...
我可以提供一个基于IEEE PHM 2012数据集的轴承寿命预测的Python代码示例:import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor# 读取IEEE PHM 2012数据集
data_set = pd.read_csv('IEEE_PHM_2012.csv')# 将特征和标签分离
X = data_set.iloc[:, :-1].values
y = data_set.iloc[:, -1].values# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)# 创建随机森林回归器
regressor = RandomForestRegressor(n_estimators=20, random_state=0)# 训练模型
regressor.fit(X_train, y_train)# 预测寿命
y_pred = regressor.predict(X_test)
【轴承RUL预测代码】基于TCN、TCN和多头注意力(TCN和Transformer的encoder结合)、Transformer模型的轴承RUL预测代码(精华)
lemontreeya:
聊一聊深度学习做寿命预测
m0_69249700:
聊一聊model.fit()与model.evaluate()指标值不同的坑
风筝不是风:
聊一聊model.fit()与model.evaluate()指标值不同的坑
七400:
西储大学(CWRU)轴承数据集故障诊断(一):数据读取,数据集划分
风筝不是风: