作家
登录

利用Pytorch进行CNN详细剖析

作者: 来源: 2017-08-16 11:06:05 阅读 我要评论

本文缘起于一次CNN功课中的一道题,这道题涉及到了根本的CNN收集搭建,在MNIST数据集上的分类结不雅,Batch Normalization的影响,Dropout的影响,卷积核大年夜小的影响,数据集大年夜小的影响,不合部分数据集的影响,随机数种子的影响,以及不合激活单位的影响等,可以或许让人比较周全地对CNN有一个懂得,所以想做一下,于是有了本文。


开源深度进修库: PyTorch

实现

初始请求

应用Pytorch进行CNN具体分析

  1. class Net(nn.Module): 
  2.     def __init__(self): 
  3.         super(Net, self).__init__() 
  4.         self.conv1 = nn.Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1), padding=0) 
  5.         self.conv2 = nn.Conv2d(20, 50, kernel_size=(5, 5), stride=(1, 1), padding=0) 
  6.         self.fc1 = nn.Linear(4*4*50, 500) 
  7.         self.fc2 = nn.Linear(500, 10) 
  8.  
  9.     def forward(self, x): 
  10.         x = F.max_pool2d(self.conv1(x), 2) 
  11.         x = F.max_pool2d(self.conv2(x), 2) 
  12.         x = x.view(-1, 4*4*50) 
  13.         x = F.relu(self.fc1(x)) 
  14.         x = self.fc2(x) 
  15.         return F.log_softmax(x) 

这部分代码见 base.py 。

问题A:预处理

应用Pytorch进行CNN具体分析

即请求将MNIST数据集按照规矩攫取并且tranform到合适处理的格局。这里攫取的代码沿用了BigDL Python Support的攫取方法,无需细说,根据MNIST主页上的数据格局可以很快读出,关键block有攫取32位比特的函数:

将ReLU全部换成Sigmoid后,用全部60000个练习集练习,有比较结不雅如下:

  1. 500:   84.2% 
  2. 1000:  92.0% 
  3. 2000:  94.3% 
  4. 5000:  95.5% 
  5. 10000: 96.6% 
  6. 20000: 98.4% 
  7. 60000: 99.1% 
  1. def _read32(bytestream): 
  2.     dt = numpy.dtype(numpy.uint32).newbyteorder('>')    # 大年夜端模式攫取,最高字节在前(MSB first
  3.     return numpy.frombuffer(bytestream.read(4), dtype=dt)[0] 

读出后是(N, 1, 28, 28)的tensor,每个像素是0-255的值,起首做一下归一化,将所有值除以255,获得一个0-1的值,然后再Normalize,练习集和测试集的均值方差都已知,直接做即可。因为练习集和测试集的均值方差都是针对归一化后的数据来说的,所以刚开端没做归一化,所以forward输出和grad很离谱,后来才发明是这里出了问题。

这部分代码见 preprocessing.py 。

问题B:BASE模型

应用Pytorch进行CNN具体分析

将random seed设置为0,在前10000个练习样本上进修参数,最后看20个epochs之后的测试集缺点率。最后结不雅为:

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  Go语言如果按这样改进,能不能火过Java?

据媒体报道,为改进 Go 说话的开辟对象,Go 可能会获得本身的说话办事器,类似于 Microsoft 和 Red Hat 的说话办事器协定。消息是大年夜 Go 说话开辟者的评论辩论组中流出,所以这不是最>>>详细阅读


本文标题:利用Pytorch进行CNN详细剖析

地址:http://www.17bianji.com/lsqh/36741.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)