torch入门笔记10:如何建立torch神经网络模型

这一章不涉及太多的神经网络的原理,重点是介绍如何使用Torch7

  • 神经网络 
    这里写图片描述 
    首先require(相当于c语言的include)nn包,该包是神经网络的依赖包,记得在语句最后加上“;”,这个跟matlab一样不加的话会打印出来数据。Torch可以让我们自己一层一层的设计自己的网络,像是容器一样可以一层一层地把你自己的Layer(神经网络的中的层)往里面添加。 
    这里写图片描述 
    首先,要构造一个神经网络容器,即用上面的形式声明一个神经网络容器,网络名为net,博主目前知道的Torch提供了三种形式构建的神经网络的容器,如下图 
    torch入门笔记10:如何建立torch神经网络模型_第1张图片 
    这里使用的是第一种,看名字大概也能猜到就是队列形式的,一层接一层地加载,第二种,第三种,图像展示应该比我文字描述的更形象。(有时间找个其他的列子把后面的两种的试验补充上)。 
    这里写图片描述 
    这里代码行的序号没截屏好,第3行是没有的,第2行代码后直接接的是第4行代码。这里是net神经网络容器调用add()添加方法,向里面添加层,nn.SpatialConvolution()是创建一个卷基层,里面的参数值的含义分别为:1表示输入图片的通道为1,这个改写成3就是输入3通道的图片;6表示经过该层的卷积运算输出的通道数;5,5这两个参数代表的是用5x5的核进行卷积运算。总结,该层是把1通道的图片输入进来然后利用5x5的卷积核进行卷积运算,最后输出6通道的图片。 
    module = nn.SpatialConvolution(nInputPlane, nOutputPlane, kW, kH, [dW], [dH], [padW], [padH]) 

    这是卷积层的函数说明,我们在上面只用到了前4个参数,[ ]为可以不用输入的参数,后面的dW,dH即横向移动和纵向移动的步长默认为1,padW为宽度维度附加0的参数,因为有的图像用你设置的卷积核和步长运算时,可能出现维数不对的情况(类比2x3的矩阵不能乘以2x4的矩阵一样,你的需要把2x4的矩阵换成3x4的矩阵,这里是在2x4的矩阵下面添加一行0元素,使其成为3x4的矩阵),默认为0,最好是设置成(kW-1)/2,即卷积核的宽-1后再除以2。padH默认为padW,最好设置成(kH-1)/2,即卷积核的高-1后再除以2。

如果对于卷积神经网络不是很了解的,可能看着还不是太明白我表达的意思,可以先把这些放一放,继续往下看,推荐一个网站http://cs231n.github.io/convolutional-networks/ 不喜欢看英文可以先看看这个http://dataunion.org/11692.html 网站。

这里写图片描述 
第4行是往容器里面加入卷基层操作,现在就在卷积层里面添加激励函数ReLU函数,你也可以添加Sigmoid函数等等。 
这里写图片描述 
这里是添加pool池化层,即在2x2的区域内找最大的数,横向步长为2,纵向步长为2。 
module = nn.SpatialMaxPooling(kW, kH, [dW], [dH], [padW], [padH]) 

padW和padH跟卷积层的那个函数一样,不再赘述。 
这里写图片描述

添加卷基层torch的会自动连接前面的6张图片作为输入,这次是输出16张图片,卷积核为5x5,激励函数,池化层。 
这里写图片描述 
第7行之后是第9行,第8行没有代码。 
这行是将16x5x5的3维tensor转换成16x5x5的1维tensor。通俗地理解为原先用16x5x5的立方体描述的东西,现在转化成用一条16x5x5线来描述之前的东西(后面有图,我会试着再解释下,希望可以理解地更清晰点)。 
这里写图片描述 
Linear是全连接层,我们将3维的tensor转化成(想象成立方体)转化成了1维的tensor,这在上一步时会输出16x5x5=400个节点,在这里我们让这400个节点与120个节点建立全连接。 
这里写图片描述 
添加激励层 
这里写图片描述 
同上120个节点与84个节点全连接,添加激励层。 
这里写图片描述 
13行的第一步,84个节点与10个节点全连接。最后是将10个节点输出转化成对数概率,用于分类问题。 
torch入门笔记10:如何建立torch神经网络模型_第2张图片 
最后打印出自己的建立的的神经网络。注意net:__是两个下划线,不要打错了!!! 
torch入门笔记10:如何建立torch神经网络模型_第3张图片 
这是建立的神经网络的结构图,我再在这里解释下那个view()函数,S4层到C5层这里就是使用了view()函数,再想象下我类比的那个立方体到直线的转换,S4层总体的可以看为长16宽5高5的立方体,C5层则变成了长120的线段。

神经网络建立好了,下一章是如何训练它

你可能感兴趣的:(Torch)