IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 基于Pytorch,神经网络代码中super(Netself).__init__()的语法深入分析 -> 正文阅读

[人工智能]基于Pytorch,神经网络代码中super(Netself).__init__()的语法深入分析

问题阐述

import torch
from torch import nn

# 搭建神经网络
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.model = nn.Sequential(
            nn.Conv2d(3, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Flatten(),
            nn.Linear(64*4*4, 64),
            nn.Linear(64, 10)
        )

    def forward(self, x):
        x = self.model(x)
        return x

在自己搭建的网络Net中,经常会见到构造器__init__()中会有super(Net, self).init()这么一句话,意思是自己搭建的网络Net会继承nn.Module:

    def __init__(self):
        super(Net, self).__init__()

可是按照之前学习的继承语法,比如B继承A,应该是如下语句:

class A:
	def __init__(self):
		pass

class B(A):
	def __init__(self):
		super().__init__()

为什么pytorch中,神经网络的搭建要这么写呢

我的理解

读完这篇文章self参数 - __ init__ ()方法 super(Net, self).init(),大概意思是:

super有个内核叫做mro,是method resolution order的缩写,作用是,mro会记录一个父类列表,告诉self实例所属的这个类在继承过程中,究竟调用哪一个父类的__init__()方法来初始化,免得父类直接相互有继承关系而造成__init__()方法交叉调用的混乱

super(type, obj)的用法:

class Son(Father, Father2):
       def __init__(self):
              super(Son, self).__init__()

mro列表=[Son, Father1, Father2, Base],super会从mro中,找到传入它的第一个参数’Son’,并第一个参数’Son’右边的一个类开始,依次寻找__init__函数。这里是从Father1开始寻找,一旦找到,就把找到的__init__函数绑定到self对象,并返回。

如果想继承中调用Father2的__init__()方法,就应该写成:

class Son(Father1, Father2):
       def __init__(self):
              super(Father1, self).__init__()

相关文章

Python super() 函数
super(Net, self).init()
super(Net,self).init() 的含义
【笔记】super(XXX,self).init( ) 的含义
解惑(一) ----- super(XXX, self).init()到底是代表什么含义
Python super() 函数(知乎)
python—方法解析顺序MRO(Method Resolution Order)<以及解决类中super方法>

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:29:25  更:2021-10-23 12:33:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:47:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码