Pytorch(二)

Pytorch(二)

Pytorch实现一维数组模型训练

  • Pytorch(二)
  • 前言
  • 一、matlab中的mat文件加载
  • 二、数据处理
    • 1.数据的基础变换
    • 2.用模型处理数据,使其变成二维数组
    • 3.验证模型
  • 三、把训练好的二维数生成图片
  • 四、建立模型
  • 五、总结


前言

上网查阅了大量的资料,发现一维的数据训练很少,训练一维的数据可以快速的学习数据分析,所以这里以一维的数据集进行模型训练,希望大家能够学习到很多东西


提示:本次训练的数据集是电机轴承转动的数据集,各位可以自己寻找数据集,或者私信也可以的。

一、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://blog.csdn.net/qq_39889022/article/details/119418172?spm=1001.2014.3001.5502

五、总结

通过训练一维数据能够很快的学会数据分析,果然实战中学习才是最快的,小安继续努力,加油!

你可能感兴趣的:(pytorch,深度学习,时序信号处理,深度学习,pytorch,uml时序图,时序模型,python)