torch神经网络包 nn

torch神经网络包 nn


y = torch.func(x,…)等价于y = x:func(…),就是说如果用”torch”,那么“src”是第一个参数。否则就”src:”



神经网络训练正常有5步:

1.加载数据

2.定义网络   nn.Sequential

3.定义损失函数  nn.ClassNLLCriterion  等等

4.训练  trainer = nn.StochasticGradient(net, criterion)

5.测试   predict = net:forward(trainset.data[i])


如果用GPU,dataset,net和criterion需要转换下,即net:cuda()。



神经网络包 nn

神经网络是由不同的模块构成。



构建网络

        Module 抽象类,子类是Container,Container有3个重要的子类:Sequential, Parallel和Concat,由这三类构成的神经网络中可以包含简单层,即Linear, Mean, Max和Reshape等,也包括卷积层还有激活函数Tanh, ReLU等。


Module是抽象类,主要有4个主要的函数。

1.forward(input) 根据输入计算该mode的输出

2.backward(input, gradOutput)反向传播,更新网络权重。这里的gradOutput就是就是dLoss_dOutput

3. [output] updateOutput (input)   更新输出,只需要输入值就行

4. [gradInput] updateGradInput (input, gradOutput)  这个需要输入值以及dLoss_doutput,才能进行反向传播,由梯度求导的链式法则可以知道。这个函数主要是计算dLoss_dInput


说明:

1.forward 和 backward函数的input必须一致

2. forward会调用updateOutput,backward会调用updateGradInput和accGradParameters。

3.高级训练方式只需重载updateOutput和updateGradInput,内部参数会自动改变。自定义的Module层等可以重写这两个函数。

4. backward 和updateGradInput方法中用到的 gradOutput,就是dLoss_dOutput,可以采用Criterion模块的backward计算得出。


Container

       有三个子类:Sequential, Parallel, Concat,提供3种构建神经网络的容器,一般常用第一种。网络结构如下图所示。

       Sequential创建一个网络容器,然后不断add(moudule),向里面添加层。







激活函数

       SoftMax, SoftMin, SoftPlus, LogSigmoid, LogSoftMax, Sigmoid, Tanh, ReLU, PReLU, ELU, LeakyReLU等等



Layers

常用层


1.Linear 全连接

module = nn.Linear(10,5)

mlp = nn.Sequential()

mlp:add(module)

print(module.weight)

print(module.bias)

print(module.gradWeight)

print(module.gradBias)

x = torch.Tensor(10) -- 10 inputs

y = module:forward(x)


2.Dropout

module = nn.Dropout(p)


3.View

module = nn.View(sizes)

改变网络的输出tensor的shape


4.Normalize

归一化


卷积层

       Temporal Modules, Spatial Modules和Volumetric Modules,分别对应一维,二维和三维的输入。举例就是分别对应语句、图像、视频。


      Spatial Modules 主要有SpatialConvolution,SpatialFullConvolution,SpatialMaxPooling,SpatialAvaragePooling和SpatialBatchNormalization这几个。




损耗函数

       Criterion模块。有MSECriterion均方误差,ClassNLLCriterion交叉熵。

       对于分类一般有classNLLCriterion, classEntropyCriterion,回归一般使用MSECriterion。


成员函数一般有两个。

[loss] forward(input, target)

[dLoss_doutput] backward(input, target)




参考网址

1.http://blog.csdn.net/hungryof/article/details/51802829

2.http://m.blog.csdn.net/article/details?id=51339385

3.Neural-Style代码解析

http://blog.csdn.net/hungryof/article/details/52037405

4.日常笔记:Lua & Torch

http://blog.csdn.net/u010167269/article/details/51913803

5.http://nn.readthedocs.io/en/rtd/convolution/

6.http://nn.readthedocs.io/en/rtd/index.html


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值