使用pytorch怎么实现一个CNN卷积神经网络

  介绍

这篇文章给大家介绍使用pytorch怎么实现一个CNN卷积神经网络,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

,,卷积神经网络是时下最为流行的一种深度学习网络,由于其具有局部感受野等特性,让其与人眼识别图像具有相似性,因此被广泛应用于图像识别中,本人是研究机械故障诊断方面的,一般利用旋转机械的振动信号作为数据。

,,,对一维信号,通常采取的方法有两种,第一,直接对其做一维卷积,第二,反映到时频图像上,这就变成了图像识别,此前一直都在利用keras搭建网络,最近学了pytroch搭建cnn的方法,进行一下代码的尝试。所用数据为经典的财政部手写字体数据集

import 火炬   import  torch.nn  as 神经网络   import  torch.utils.data  as 数据   import  torchvision   import  matplotlib.pyplot  as  plt   ' EPOCH =1   BATCH_SIZE =50   LR  0.001=,   DOWNLOAD_MNIST =,真的      从网上下载数据集:      ”“python   时间=train_data  torchvision.datasets.MNIST (   根=啊?mnist/?=,train ,真的,   ,变换=torchvision.transforms.ToTensor (),=,,download  DOWNLOAD_MNIST,   )      print (train_data.train_data.size ())   print (train_data.train_labels.size ())      ' ' ' plt.imshow (train_data.train_data [0] .numpy(),提出=& # 39;秋天# 39;)   plt.title(“%我,%,train_data.train_labels [0])   plt.show ()      时间=train_loader  Data.DataLoader(数据集=train_data, batch_size=batch_size,洗牌=True)      test_data =, torchvision.datasets.MNIST (root=啊?mnist/,,,火车=False)   时间=test_x  torch.unsqueeze (test_data.test_data,昏暗的=1).type (torch.FloatTensor) [2000]/255。      时间=test_y  test_data.test_labels [2000]         class  CNN (nn.Module):   自我,def  __init__ ():   超级才能(CNN,,自我). __init__ ()   时间=self.conv1 才能;nn.Sequential (   ,,nn.Conv2d (   ,,,in_channels=1,   ,,,out_channels=16,   ,,,kernel_size=5,   ,,,跨步=1,   ,,,填充=2,   ,,),   ,,   ,,nn.ReLU (),   ,,nn.MaxPool2d (kernel_size=2),   ,,)   ,,   时间=self.conv2 才能;nn.Sequential (   ,,nn.Conv2d(16日,32岁,5,,1,,2),   ,,nn.ReLU (),   ,,nn.MaxPool2d (2),   ,,)   ,,   self.out 才能=,nn.Linear (32 * 7 * 7, 10), #, fully  connected 层,output  10类   ,,   向前,def (自我,,x):   时间=x 才能;self.conv1 (x)   时间=x 才能;self.conv2 (x)   时间=x 才能;x.view (x.size (0), 1), #, flatten 从而output  of  conv2 用(batch_size, 32 * 7 * 7)   时间=output 才能;self.out (x)   return 才能输出   ,   时间=optimizer  torch.optim.Adam (cnn.parameters (),, lr=lr)   时间=loss_func  nn.CrossEntropyLoss ()   ,   ,得到matplotlib  import 厘米   试一试:得到sklearn.manifold  import  TSNE; HAS_SK =, True   除了:HAS_SK =, False;,打印(& # 39;Please  install  sklearn  for  layer 可视化# 39;)   def  plot_with_labels (lowDWeights,,标签):   ,plt.cla ()   ,X, Y =, lowDWeights (:,, 0), lowDWeights (:,, 1)   ,for  x, y,, s 拷贝zip (x, y,,标签):   c 才能=,cm.rainbow (int (255, *, s /, 9));, plt.text(年代,x,, y,,写成backgroundcolor=c,字形大?9)   ,plt.xlim (X.min (),, X.max ());, plt.ylim (Y.min (),, Y.max ());, plt.title (& # 39; Visualize  last 层# 39;);,plt.show ();, plt.pause (0.01)      plt.ion ()      for  epoch 拷贝范围(时代):   ,for 一步,(提出,的话),拷贝列举(train_loader):   output 才能=,cnn(提出)   时间=loss 才能;loss_func的话(,,)   optimizer.zero_grad才能()   loss.backward才能()   optimizer.step才能()   ,,   if 才能;step  %, 50,==, 0:   ,,test_output =, cnn (test_x)   ,,pred_y =, torch.max (test_output, 1) [1] .data.numpy ()   ,,accuracy =,浮子((==pred_y  test_y.data.numpy ()) .astype (int) .sum()),/,浮子(test_y.size (0))   ,,print(“时代:“,,时代,,“|,train 失:,% .4f", %, loss.data.numpy (),,   ,,,,“|,test 准确性:,% .2f", %,准确性)   ,,   plt.ioff ()

关于使用pytorch怎么实现一个CNN卷积神经网络就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用pytorch怎么实现一个CNN卷积神经网络