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

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 ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_45279187/article/details/123431177
今日推荐