一维信号转成二维图像方法总结(Python代码,不涉及TensorFlow或者pytorch框架)(1)

首先对原始数据进行不重叠样本切割(1024的长度) ,正常、内圈故障、滚动体故障和外圈故障每类取100个样本,然后将一维样本经过小波变换转变成图像,也就是生成400张照片,前100张(图像名称0-99.jpg)是正常类型图像,(图像名称100-199.jpg)是内圈故障;(图像名称200-299.jpg)是滚动体故障;(图像名称300-399.jpg)是外圈故障。

目前图像大小是(8,4),代码里有注释,可以修改。

0HP数据集开始位置

0HP数据集截止位置

其它负载(1HP,2HP,3HP数据集与此类似,不再列举)

1.2.JNU数据集(江南大学轴承数据集),表格.csv文件

以600rpm转速数据集为例

首先对原始数据进行不重叠样本切割(1024的长度) ,正常、内圈故障、滚动体故障和外圈故障每类取150个样本,然后将一维样本经过小波变换转变成图像,也就是生成600张照片,前150张(图像名称0-149.jpg)是正常类型图像,(图像名称150-299.jpg)是内圈故障;(图像名称300-449.jpg)是滚动体故障;(图像名称450-599.jpg)是外圈故障。

目前图像大小是(8,4),代码里有注释,可以修改。

江南大学轴承数据集(600rpm数据集开始位置)

江南大学轴承数据集(600rpm数据集截止位置)

对项目感兴趣的,可以关注(两个数据集变换在一起的压缩包)


import numpy as np 
import pandas as pd
#from sklearn.model_selection import train_test_split
from collections import Counter
import pywt
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
#压缩包:https://mbd.pub/o/bread/mbd-ZZ2Ykplt

2.1.灰度图像生成(待续)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的用GAN生成一维特征的PyTorch代码: ```python import torch import torch.nn as nn import numpy as np import matplotlib.pyplot as plt # 用于生成真实数据的函数,本例使用 y = x^2 + 0.1*noise def get_real_samples(n_samples): x = np.linspace(-1, 1, n_samples) y = x ** 2 + 0.1 * np.random.randn(*x.shape) return x, y # 用于生成噪音数据的函数 def get_noise_samples(n_samples, noise_dim): return np.random.randn(n_samples, noise_dim) # 生成器及其对应的判别器定义 class Generator(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(Generator, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.fc2 = nn.Linear(hidden_size, hidden_size) self.fc3 = nn.Linear(hidden_size, output_size) def forward(self, x): x = torch.relu(self.fc1(x)) x = torch.relu(self.fc2(x)) x = self.fc3(x) return x class Discriminator(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(Discriminator, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.fc2 = nn.Linear(hidden_size, hidden_size) self.fc3 = nn.Linear(hidden_size, output_size) self.sigmoid = nn.Sigmoid() def forward(self, x): x = torch.relu(self.fc1(x)) x = torch.relu(self.fc2(x)) x = self.sigmoid(self.fc3(x)) return x # GAN模型训练 def train_gan(generator, discriminator, gan, n_epochs, n_batch, n_noise): # 损失函数及优化器 criterion = nn.BCELoss() optimizer_g = torch.optim.Adam(generator.parameters(), lr=0.001) optimizer_d = torch.optim.Adam(discriminator.parameters(), lr=0.001) # 训练过程中保存损失值 gen_loss_hist = [] dis_loss_hist = [] # 训练数据准备 x_real, _ = get_real_samples(n_batch) x_real = torch.from_numpy(x_real).float() y_real = torch.ones(n_batch, 1) x_noise = torch.randn(n_batch, n_noise) # GAN模型训练 for epoch in range(n_epochs): # 更新判别器 y_fake = discriminator(generator(x_noise)) y_real_pred = discriminator(x_real.unsqueeze(1)) dis_loss_real = criterion(y_real_pred, y_real) dis_loss_fake = criterion(y_fake, torch.zeros(n_batch, 1)) dis_loss = dis_loss_real + dis_loss_fake dis_loss.backward() optimizer_d.step() discriminator.zero_grad() # 更新生成器 y_fake = discriminator(generator(x_noise)) gen_loss = criterion(y_fake, y_real) gen_loss.backward() optimizer_g.step() generator.zero_grad() # 保存损失值 gen_loss_hist.append(gen_loss.item()) dis_loss_hist.append(dis_loss.item()) # 绘制损失值曲线 plt.plot(gen_loss_hist, label='Generator Loss') plt.plot(dis_loss_hist, label='Discriminator Loss') plt.legend() # 模型训练 n_samples = 1000 n_noise = 10 n_hidden = 32 n_epochs = 2000 n_batch = 64 generator = Generator(n_noise, n_hidden, 1) discriminator = Discriminator(1, n_hidden, 1) gan = nn.Sequential(generator, discriminator) train_gan(generator, discriminator, gan, n_epochs, n_batch, n_noise) # 生成样本并绘制结果 x = np.linspace(-1, 1, n_samples) x = torch.from_numpy(x).float() y = generator(torch.randn(n_samples, n_noise)).squeeze().detach().numpy() plt.figure() plt.scatter(x, y, s=1) plt.show() ``` 该代码通过定义生成器和判别器来实现GAN模型,生成器用于生成数据,判别器用于判断真实数据和生成数据。训练过程中先更新判别器,然后再更新生成器。本例使用了一个简单的二次函数作为真实数据的生成函数,使用Adam优化器和BCELoss损失函数进行训练。最终生成的数据可以在代码的最后绘制出来。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值