model是如何作用的
model的两个要素
1.构建子模块: model的初始化函数 init(),要使用supper调用nn.model类,在初始化函数中我们构建子模块。
2. 拼接子模块: model 的 forward函数中我们用子模块构建计算图,返回计算结果
在model类的引用处设置断点
步入leNet中
进入定义leNet的model文件中:
模型构建第一个要素,构建子模块,就是在model文件,继承nn.model()类的自定义类中的__init__()中构建,在实例化阶段只会调用模型的__init__()模块。遍历每一个模块后,就跳出model文返回训练文件
接下里一直到训练阶段才会再次调用模型
进入前向传播对应代码里
可以看到进入model的call函数,我们手写的model是Pytorch自带的nn.model
的一个实例,如果这一步可以进入call函数,说明我们的model可以被调用。我们需要关注的是上述代码中的forward。
进入forward:
就会进入一个到我们自己在model文件中编写的forward函数,在forward函数里进行前向传播运算。返回值赋给了outputs