torch入门笔记11:如何训练神经网络
来源:互联网 发布:安装办公软件步骤 编辑:程序博客网 时间:2024/05/06 02:50
这一节先介绍一些基本操作,然后再对我们前面建立的网络进行训练
- 神经网络的前向传播和反向传播
随即生产一张照片,1通道,32x32像素的。为了直观像是,导入image包,然后用itorch.image()方法显示生成的图片,就是随即的一些点。
Step1:
mainly the net initialization -> net: zeroGradParameters将网络里面的梯度缓存设置为0
net:forward() -> get the predict value
用之前建立好的神经网络net调用forward()方法输入随即生成的图片得到输出的结果,如打印出来的形式,net最后是10个输出节点,这里输出了10个值。注意,这是前向传播,网络里面的权重是随即分布的,这是BP算法之前需要做的运算。
18行是将网络里面的梯度缓存设置为0,19行是网络net的反向传播方法,第一个参数是输入的图片,这里应与forward()方法里面输入的图片一致,第二个参数在这里的意思是训练用的分类标签,注意不是预测出来的标签,是训练样本的真实的标签,即需要拟合的标签。最后返回的是需要输入的梯度,即进行梯度下降算法是需要的那个梯度(可能是,我回头再确认下,这个不影响我们训练)。
前向传播和反向传播的基本过程就是上面,当然到这还不能我们的网络,还没有定义损失函数,下面介绍损失函数的基本操作。
Step2: set the loss function -> criterion = nn.MSEcriterion()
Get the loss from function -> criterion:forward(predicts,targets)
Then, get the gradient of loss function -> criterion:backward(predicts,targets)
- criterion评价准则,这是用来定义损失函数的。当你想让你的神经网络学习一些东西时,你就要给他一些反馈,告诉他怎么做是对的。损失函数能够形式化的衡量你的神经网络的好坏。例子如下:
还是在nn这个包里面有很多的评测函数,在这里我选择了ClassNLLCriterion()这种方法,这是用来多分类的方法,用的是negative log-likelihood(负对数似然概率,抱歉非数学专业不知道怎么翻译这个,不过不影响时候,只需知道他是用来做多分来的评测函数就行)。
损失函数的实现也有正向和方向两个操作,多说一点,不同的神经网络用BP算法求解的思想是一样的,但是定义的网络不同其具体的损失度量不同官方文档还强调该函数特别适合不平衡数据的分类!!!。就这个例子来说我们定义是适合对分类的损失函数,调用他的前向传播方法并输入的参数分别为预测的类和训练样本所属的类。这里执行后会有一个返回值,即他们的误差(err),博主没有进行赋值。
Step3: Get the dl=d(loss_function)(gradients) / dx (input) = D(net_gradients)/Dx -> net:backward(input,gradients)
Updates Nets -> net:updateParamertes(0.01)
return loss, dl_dx - 执行完损失函数的前向操作后,再进行反向操作,backward()方法里面的参数同forward()函数里的参数,返回值是损失函数的梯度。
调用神经网络net的backward()方法输入训练集和其对应的损失函数梯度。然后,使用神经网络net的updateParameters()更新权重,该方法的输入值为学习率,即完成了训练。注意,gradInput这个返回值可写可不写不影响我们的训练。
Step4: use the optimization :
optim.sgd(feval, x, sgd_params)
feval -> return loss,dl/dx
x -> input
sgd_params -> learning rates
- torch入门笔记11:如何训练神经网络
- torch入门笔记10:如何建立torch神经网络模型
- torch入门笔记17:使用随机梯度下降训练神经网络StochasticGradient
- torch入门笔记5:用torch实现RNN来制作一个神经网络计时器
- torch入门笔记1:torch的使用
- Torch 笔记:神经网络(Neural Networks)
- torch入门笔记8:tensor
- torch入门笔记9:function
- 神经网络训练技巧入门
- 入门,训练GAN神经网络
- torch入门笔记7:Torch的入门使用
- 如何加强神经网络训练
- 如何加强神经网络训练
- torch入门笔记3:用torch实现多层感知器
- torch入门笔记2:用torch实现线性回归
- torch入门笔记19:关于一些torch博客的索引
- torch入门笔记20:torch实现freeze layer的操作
- lua,torch,nn模块入门笔记
- 4招,教你搞定面试官!
- C++类自动转换
- 【Java】抽象类
- 1500套HTML5模版分享
- 家电排行榜
- torch入门笔记11:如何训练神经网络
- CentOS 7.2安装subversion1.8.13
- Java基础--final关键字
- 如何操作git回滚
- Python爬虫实战二之爬取百度贴吧帖子
- ACCP 7.0 第一章 上机练习3
- 线程间的通信——wait及notify方法
- C#委托事件的基本操作
- 快递地址