WDCNN结合GRU滚动轴承故障诊断(十分类,Python代码,TensorFlow框架,压缩包包含数据集和代码,解压缩后直接运行)

项目文件夹:

main_0HP.py、main_1HP.py、main_2HP.py和main_3HP.py是故障诊断主程序,分别对应不同负载的数据,这四个程序只有数据调取路径这行代码不一样,其它部分都相同,只是担心新手不会修改数据路径,因此分成了四个脚本。preprocess.py是数据预处理程序,将原始数据变成一个个样本,被主程序调用。
 

环境库要求:tensorflow>2.4.0即可运行

1.数据集介绍(凯斯西楚大学数据集,包含四种负载数据集)

以0hp为例进行展示,每种负载下包含10种类型(三种不同尺寸下的内圈/外圈/滚动体故障(3*3=9种),正常) 

2.网络结构

3.效果图

每种负载下训练集、验证集与测试集个数均如下所示

0HP数据集

训练集准确率曲线

验证集准确率曲线

测试集准确率

验证集的混淆矩阵

验证集的特征可视化

测试集的混淆矩阵

测试集的特征可视化

1HP数据集

训练集准确率曲线

验证集准确率曲线

测试集准确率

验证集的混淆矩阵

验证集的特征可视化

测试集的混淆矩阵

测试集的特征可视化

2HP数据集

训练集准确率曲线

验证集准确率曲线

测试集准确率

验证集的混淆矩阵

验证集的特征可视化

测试集的混淆矩阵

测试集的特征可视化

3HP数据集

训练集准确率曲线

验证集准确率曲线

测试集准确率

验证集的混淆矩阵

验证集的特征可视化

测试集的混淆矩阵

测试集的特征可视化

对项目感兴趣的,可以关注最后一行

from keras.layers import Conv1D, Dense, Dropout, BatchNormalization, MaxPooling1D, Activation, Flatten,GRU
from keras.models import Sequential
from keras.utils import plot_model
from keras.regularizers import l2
import preprocess
from keras.callbacks import TensorBoard
import numpy as np
#代码和数据集压缩包:https://mbd.pub/o/bread/mbd-ZJeXl5dt

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 PyTorch 实现 GRU 模型对美国凯斯西储大学轴承故障数据集进行故障诊断的示例代码: ```python import torch import torch.nn as nn import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler # 读取数据 data = pd.read_csv('K001_1_48k_0_12hp_B_C3_0.csv', header=None) data = data.values[:, 1] data = data.reshape(-1, 1) # 数据预处理 scaler = MinMaxScaler(feature_range=(-1, 1)) data_scaled = scaler.fit_transform(data) # 定义超参数 input_size = 50 hidden_size = 32 num_layers = 2 output_size = 1 learning_rate = 0.001 num_epochs = 100 # 创建训练数据集 X = [] y = [] for i in range(input_size, len(data_scaled)): X.append(data_scaled[i-input_size:i]) y.append(data_scaled[i]) X, y = np.array(X), np.array(y) # 划分训练集和测试集 train_size = int(len(data_scaled) * 0.8) X_train, X_test = X[:train_size], X[train_size:] y_train, y_test = y[:train_size], y[train_size:] # 创建数据加载器 train_data = torch.utils.data.TensorDataset(torch.from_numpy(X_train).float(), torch.from_numpy(y_train).float()) train_loader = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True) # 定义 GRU 模型 class GRU(nn.Module): def __init__(self, input_size, hidden_size, num_layers, output_size): super(GRU, self).__init__() self.hidden_size = hidden_size self.num_layers = num_layers self.gru = nn.GRU(input_size, hidden_size, num_layers, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x, h0): out, h = self.gru(x, h0) out = self.fc(out[:, -1, :]) return out, h model = GRU(input_size, hidden_size, num_layers, output_size) # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) # 训练模型 for epoch in range(num_epochs): for i, (inputs, labels) in enumerate(train_loader): # 前向传播 outputs, _ = model(inputs, None) loss = criterion(outputs, labels) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() if (i+1) % 10 == 0: print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, i+1, len(train_loader), loss.item())) # 预测测试集 with torch.no_grad(): inputs = torch.from_numpy(X_test).float() outputs, _ = model(inputs, None) predicted = scaler.inverse_transform(outputs.numpy()) actual = scaler.inverse_transform(y_test) # 计算 R2 得分 from sklearn.metrics import r2_score print('R2 score:', r2_score(actual, predicted)) ``` 在上述代码中,我们首先读取了凯斯西储大学轴承故障数据集,并进行了数据预处理。然后,我们定义了超参数,包括输入大小、隐藏层大小、层数、输出大小、学习率和训练轮数。接着,我们创建了训练数据集和数据加载器,并定义了 GRU 模型、损失函数和优化器。在训练循环中,我们对每个 mini-batch 执行前向传播、损失计算、反向传播和优化。在预测测试集时,我们使用训练好的模型进行前向传播,并将预测结果反归一化。最后,我们计算模型在测试集上的 R2 得分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习的奋斗者

你的鼓励是我努力的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值