Pytorch(二)
前言
上网查阅了大量的资料,发现一维的数据训练很少,训练一维的数据可以快速的学习数据分析,所以这里以一维的数据集进行模型训练,希望大家能够学习到很多东西
提示:本次训练的数据集是电机轴承转动的数据集,各位可以自己寻找数据集,或者私信也可以的。
一、matlab中的mat文件加载
大部分的一维数据集都是matlab格式的,这里需要把matlab读取到的数据进行转换,代码如下:
def matbecametxt():
features_struct=scipy.io.loadmat('97.mat')
features=features_struct['X097_DE_time']
dfdata=pd.DataFrame(features)
datapath1='97.txt'
dfdata.to_csv(datapath1,index=False)
desktop_path = "" # 新创建的txt文件的存放路径
full_path = desktop_path + name + '.txt' # 也可以创建一个.doc的word文档
file = open(full_path, 'a+')
file.write(msg)
file.close()
二、数据处理
1.数据的基础变换
这里想到的办法是把大量的数据集变成数据,然后通过reshape或者resize变成[b,1,1024]这种模式,以便于数据处理。代码如下:
def fenlei():
data = pd.read_csv('97.txt') # print(data) #read Successful
data = np.array(data)
data = np.resize(data, (int(243938/1024), 1024))
return data
2.用模型处理数据,使其变成二维数组
这个转换成一个一个的[1,1024]肯定是一个数据流,但是通过模型,即可把这个数据流转换成二维数组,我们虽然不认识,但是计算机肯定会认识的,代码如下:
class xiaoanmoxing(nn.Module):
def __init__(self):
super(xiaoanmoxing , self).__init__()
self.model=nn.Sequential(
nn.Conv1d(in_channels=1,out_channels=8,kernel_size=9,stride=1,padding=4),
nn.ReLU(),
nn.MaxPool1d(2),
nn.Conv1d(in_channels=8, out_channels=16, kernel_size=9, stride=1, padding=4),
nn.ReLU(),
nn.MaxPool1d(2),
nn.Conv1d(in_channels=16, out_channels=32, kernel_size=9, stride=1, padding=4),
nn.ReLU(),
nn.MaxPool1d(2),
nn.Conv1d(in_channels=32, out_channels=64, kernel_size=9, stride=1, padding=4),
nn.Tanh(),
nn.MaxPool1d(2),
# nn.Conv2d(1,16,3,1,0),
)
def forward(self,x):
x=self.model(x)
return x
3.验证模型
所有的模型都是需要验证的,这里建立了一个数组[1,1,1024],带入模型中,发现思路正确,所以直接家在数据集,即可把大量的数据流转换成黑白图片,转换的代码如下:
xiaoan=xiaoanmoxing()
for i in data:
i=i.reshape([1,1,1024])
i=xiaoan(i)
print(i)
三、把训练好的二维数生成图片
通过上述的操作,相信各位已经和博主一样都生成了二维数组了,讨厌的数据流终于离开了我们,剩下就是把二维数组生成图片了,这样能够方便我们进行操作下一步,代码如下:
def out_img(data,name):
new_im = Image.fromarray(data)
#new_im.show()
pyplot.imshow(data)
imageio.imsave('zhengcahng/{}.jpg'.format(name), new_im)
xiaoan=xiaoanmoxing1()
a=0
for i in data:
i=i.reshape([1,1,1024])
i=xiaoan(i)
i=i.detach().numpy()
i=np.reshape(i,[64,64])
out_img(i,'{}'.format(a+1))
print(i.shape)
a=a+1
效果图:
四、建立模型
下面不会的小伙伴可以看博主的Pytorch(一)了,通过这个博客就可以把图片训练成数据集 第一篇链接:
https:
五、总结
通过训练一维数据能够很快的学会数据分析,果然实战中学习才是最快的,小安继续努力,加油!
|