网络的每一个模块都是由Modules组成的,可以使用一些 Module
的子类。容器类包括Sequential,Parallel和Concat,这些容器可以包含simple layers,比如Linear,Mean,Max和Reshape,或者是convolution layers以及transfer layers比如Tanh。
Loss functions 是作为Criterion子类实现的,它可以用于训练神经网络的一些经典任务。常用的准则是MSECriterion里的Mean Squared Error criterion(均方误差)和ClassNLLCriterion里的cross-entropy criterion(交叉熵).
Module
是一个抽象类,它定义了训练一个神经网络所必要的基本方法。
Module
包含4个基本方法:
- forward(input)
- backward(input, gradOutput)
- zeroGradParameters()
- updateParameters(learningRate)
[output] forward(input)
观察函数内部:
发现forward函数实际上也只是调用了updateOutput函数,所以在Module
的子类中不建议重写forward函数,而转而重写updateOutput函数。
Modules 包含了两个状态变量:output 和gradInput。
对于一个layer而言,
gradInput 表示 dC