torch.nn是专门为神经网络设计的模块化接口,nn构建于autograd之上,可以用来定义和运行神经网络。
一、具体用法
nn.Module是nn中十分重要的类,包含网络各层的定义及forward方法。
定义网络步骤:
-
首先必须要继承nn.Module类,而且该类的构造函数中要调用Module的构造函数,
super(xxx, self).__init()__
; -
一般把网络中具有可学习参数的层放在构造函数__init__()中。
-
不具有可学习参数的层(如ReLU)也可放在构造函数中,也可不放在构造函数中(而在forward中使用nn.functional来代替)。
-
只要在nn.Module中定义 forward(),backward() 就会被自动实现(利用Autograd)。而且一般不是显式的调用forward(layer.forward), 而是layer(input), 会自执行forward().
-
在 forward() 中可以使用任何Variable支持的函数,还可以使用if, for, print, log等python语法。