第十七篇—模型构造
2023-02-16 12:07 作者:YouOnly_LiveOnce | 我要投稿
部分一:继承Module类来构造模型
以多层感知机(MLP,Multilayer Perception)举例:

代码实现:
结果:

注意:
net(x)会调用Module类的__call__方法,此方法再调用forward()方法,参考Python类中的__call__方法;
部分二:Module类的子类
(1) Sequential类
Sequential类可以接收一个子模块的有序字典(OrderedDict)或多个子模块,每个子模块用0,1,2,...序号区分;
代码实现:
结果:

自定义实现Sequential类,代码如下:
注意:关于*args参数可参考算法岗面试总结—Python篇(第三题);
(2) ModuleList类
ModuleList类可以接收一个列表作为输入,也可以进行append和extend操作;
代码实现:
结果:

(3) ModuleDict类
ModuleDict类可以接收一个字典作为输入;
代码实现:
结果:

部分三:构造复杂的模型
代码实现:
结果:

注意:
因为FancyMLP类和Sequential类都是Module类的子类,所以可以嵌套使用;
结果:
