【深度学习】Pytorch学习笔记(一)

Pytorch中需要自己定义网络模型,该模型需要封装到一个自定义的类中,该类只是一个子类,其继承的父类为torch.nn.Module,可见如下树形结构图:
【深度学习】Pytorch学习笔记(一)
Module实际又是继承了Object类,关于为什么要继承Object类有兴趣的可以看这篇博客MRO算法
也就是说,自定义的模型除了要有__init__()构造函数之外,还必须有forward函数,重写父类Module的该方法。 在子类的__init__()方法中必须调用父类的__init__()方法以初始化父类的属性,常用写法为super(自定义类名称,self ).__init__()或者Module.__init__(self)
然而forward函数不需要用户自己调用,只需要实例化用户自定义的模型对象即可,就会自动调用forward函数,这种机制类似于hook(钩子)函数,forward函数挂接在所在类的__init__()方法上,所以实例化对象的同时也调用了forward方法。
在用户自定义的模型类中,__init__()构造函数是用来初始化神经网络的层结构forward函数用来实现神经网络的前向传播