Torch7学习(五)——学习神经网路包的用法(3)
2016-07-25 22:12
357 查看
torch7学习(一)——Tensor
Torch7学习(二) —— Torch与Matlab的语法对比
Torch7学习(三)——学习神经网络包的用法(1)
Torch7学习(四)——学习神经网络包的用法(2)
Torch7学习(五)——学习神经网路包的用法(3)
Torch7学习(六)——学习神经网络包的用法(4)——利用optim进行训练
Torch7学习(七)——从neural-style代码中看自定义重载函数的训练方式
以及卷积层模块以及criterion模块。
Temporal Modules, Spatial Modules和Volumetric Modules,分别对应一维,二维和三维的输入。举例就是分别对应语句、图像、视频。
对于常见的Spatial Modules主要有SpatialConvolution,SpatialFullConvolution,SpatialMaxPooling,SpatialAvaragePooling和SpatialBatchNormalization。
kW和kH分别是width和height。
dW和dH分别是step of width/height
padW, padH默认为0.
因此,如果原图像是inputChannel*height*width, 输出图像是outputChannel* oheight* owidth
那么:
owidth = floor(width+2*padW-kW)/dW +1)
oheight = floor(height+2*padH-kH)/dH +1)
成员函数有
下一篇博客将会将最最关心的如何书写自定义自动挡训练网络了!
Torch7学习(二) —— Torch与Matlab的语法对比
Torch7学习(三)——学习神经网络包的用法(1)
Torch7学习(四)——学习神经网络包的用法(2)
Torch7学习(五)——学习神经网路包的用法(3)
Torch7学习(六)——学习神经网络包的用法(4)——利用optim进行训练
Torch7学习(七)——从neural-style代码中看自定义重载函数的训练方式
总说
这篇博客主要是讲对于只有简单层的神经网络,进行手动挡的训练方法。以及卷积层模块以及criterion模块。
例子
Simple Layer的Add层。module = nn.Add(inputDim, scalar)
y = torch.Tensor(5) mlp = nn.Sequential() mlp:add(nn.Add(5)) function gradUpdate(net,x,y,criterion,learningRate) local pred = net:forward(x) local err = criterion:forward(pred, y) local gradCriterion = criterion:backward(pred, y) -- 当必要的数据有了之后,进行三步法 -- 1. 清空net中所有参数的梯度 net:zeroGradParameters() -- 2. backward一下,这个会更新网络的权值以及相应的权值梯度和输入梯度。 -- 当然这个函数只会返回输入的梯度。 net:backward(x,gradCriterion) -- 3. 调用updateParameters进行更新参数 net:updateParameters(learningRate) return err end -- 更新 for i = 1,1000 do x = torch.rand(5) y:copy(x) for i = 1,5 do y[i] = y[i]+1 end -- 此时训练数据构造完毕 err = gradUpdate(mlp, x,y, nn.MSECriterion(), 0.01)
Convolution Layers
依据输入的Tensor的维度,可以分成3种。Temporal Modules, Spatial Modules和Volumetric Modules,分别对应一维,二维和三维的输入。举例就是分别对应语句、图像、视频。
对于常见的Spatial Modules主要有SpatialConvolution,SpatialFullConvolution,SpatialMaxPooling,SpatialAvaragePooling和SpatialBatchNormalization。
SpatialConvolution
module = nn.SpatialConvolution(inputChannel,outputChannel,kW, kH, [dW],[dH],[padW],[padH])
kW和kH分别是width和height。
dW和dH分别是step of width/height
padW, padH默认为0.
因此,如果原图像是inputChannel*height*width, 输出图像是outputChannel* oheight* owidth
那么:
owidth = floor(width+2*padW-kW)/dW +1)
oheight = floor(height+2*padH-kH)/dH +1)
Criterions
对于分类的,一般有classNLLCriterion, classEntropyCriterion。对于回归的,有MSECriterion.成员函数有
[loss] forward(input, target) [dLoss_doutput] backward(output, target)
下一篇博客将会将最最关心的如何书写自定义自动挡训练网络了!
相关文章推荐
- android studio for android learning (二十二 )如何在camera2中加载其它控件和当前摄像头视图显示在一起以及UI优化
- python笔记---需求文件requirements.txt的创建及使用
- QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
- Android for work总结(上)
- **MYSQL** 系列六
- POJ-2586-Y2K Accounting Bug
- 【ES6学习笔记】-----箭头函数与symbol
- android Binder 学习 博客链接
- poj 1456 Supermarket 贪心 并查集优化
- 在WordPress主题中使用Font Awesome
- smarty变量调节器
- 设备树
- FFmpeg中的滤镜(五):视频滤镜 -- ass
- **MYSQL** 系列五
- Linux运维注意事项
- 上海庆科EMW3162 AT指令固件 实现串口透传
- 数据结构实验之栈七:出栈序列判定
- Docker数据管理:Named volume
- android-Notification
- fatal: Not a git repository 的解决办法