Torch7 系列教程之Torch深度学习库教程(八)

2.9 nn神经网络库的应用

2.9.1 绪论

每一个神经网络的模块都是由多个Modules模块组成的,当然也有很多Module的子类模块,容器类模块例如Sequential,Parallel,和Concat模块,容器中包含有简单层例如Linear,Mean,Max和Reshape,也包括卷基层和转换函数例如Tanh。

损失函数是Criterion类的一个接口,它们在典型的任务中对于训练神经网络是非常有帮助的,最为常见的损失函数有均方损失函数MSECriterion和交叉熵损失函数ClassNLLCriterion。

最后,StochasticGradient类提供了一个高标准的方法去训练神经网络,这样就为自己训练神经网络提供了一个非常简单的方法。

2.9.2 Module类的详细函数

这一小节主要详细介绍神经网络包。一个神经网络在torch中被叫做Module,Moudle是一个抽象类,并且它定义了四种主要的方法:

  • forward(input) 这里主要通过给定的input Tensor计算出Moudle模块的输出;
  • backward(input,gradOutput) 这里主要相对与自身的参数和输入,计算Moudle的梯度
  • zeroGradParameters() 这里相相对于Module将梯度清零
  • updateParameters(learningRate)这里通过backward()函数计算出梯度之后,更新参数信息

同样也声明了两个成员:

  • output:这是通过forward()函数输出的值
  • gradInput:这个包含了相对于输入Module的梯度,在backward()函数中计算。

另外还定义了较少使用但是非常方便的两个函数

  • share(mlp,s1,s2,…,sn):这使得Module共享模块mlp的参数s1,… sn。如果你想让Module之间共享相同的权值矩阵的话,这是非常有帮助的。
  • clone(…) 提供了一个Module的深复制函数,包括它参数的当前状态。

这里还有一些重要的事项:

  • 输出只是在forward()函数被调用之后包含有效值
  • gradInput在backward(input,gradOutput)函数之后包含有效值.
  • backward(input,gradOutput)使用forward(input)期间获得有效的计算,这必须在相同的input上并且在forward()调用之后调用backward(),否则梯度信息将不会正确。

小结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值