• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

flag兑现这次Deep AR 模型用于PHM2012工况1轴承数据集的RUL预测

武飞扬头像
风筝不是风
帮助1

Deep AR模型

最早接触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/1049515041

我这里就只添加一个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
        # 可以使用多层LSTM
        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):
        pass

    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
_________________________________________________________________

学新通

1.直接将特征输入到Deep AR模型进行RUL预测

训练集:
学新通

整体的训练效果一般,并且难以充分训练。再来看看测试集轴承,(测试是full,不是截断的):
轴承1-3
学新通
轴承1-4
学新通
轴承1-5
学新通
轴承1-6

学新通
轴承1-7
学新通

2.将Deep AR应用于HI的后处理

首先通过一个神经网络模型得到每个轴承的健康指标HI,然后采用Deep AR对测试集(截断的数据)健康指标进行预测
轴承1-3
学新通

轴承1-6
学新通

总结

总体上来讲,Deep AR可能对数据量有一定的要求,另外,其运行过程的损失函数不稳定,波动很大,不像常规的loss保持下降趋势。


  1. 时间序列预测方法之 DeepAR ↩︎

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfhaih
系列文章
更多 icon
同类精品
更多 icon
继续加载