PyTorch自定义Mnist模型中self参数与super().__init__()的作用是什么
问题解答
基于你给出的Mnist识别模型代码,两个问题的解答如下:
1. 类构造方法中的self参数具体指代什么
self是Python类中所有实例方法的固定首个参数,在构造方法__init__中,它指代当前正在创建的MnistModel类的实例对象本身。
你代码中给self.linear1、self.linear2、self.linear3赋值的操作,本质是把三个网络层绑定到当前创建的模型实例上,后续你调用实例的前向传播方法、参数查看、设备迁移等操作时,都可以直接通过实例访问到这些绑定的层属性。
2. 代码中super().init()的作用是什么
你的MnistModel是继承自PyTorch的nn.Module父类的子类,super()在这里会指向你继承的父类nn.Module,super().__init__()就是主动调用父类nn.Module的构造方法完成初始化。nn.Module的构造方法里封装了PyTorch为神经网络预设的所有核心基础逻辑,包括可训练参数自动收集、模型状态(train/eval)管理、参数存储/加载、设备自动迁移等,如果你省略这行,上述PyTorch提供的封装能力都会失效,运行时会直接报错。
内容的提问来源于stack exchange,提问作者Pmesh
相关产品推荐
相关产品推荐

