Conv2d源代码解析

更新时间:2023-07-13 13:09:50 阅读: 评论:0

2,super(Conv2d, lf).__init__什么意思?
第⼀步:
戊戌变法教案super函数⽤于多层继承(multilevel inheritance)的情况,简单来说,就是之继承最近的那个⽗类。
虾面1class A:
2    def __init__(lf):
3        print('Initializing: class A')
4
5    def sub_method(lf, b):
6        print('Printing from class A:', b)
7
8
9class B(A):
10    def __init__(lf):
11        print('Initializing: class B')
沈美娟
12        super().__init__()
13
14    def sub_method(lf, b):秋夕古诗的意思
15        print('Printing from class B:', b)
16        super().sub_method(b + 1)
17
18
19class C(B):
20    def __init__(lf):
21        print('Initializing: class C')
22        super().__init__()
23
24    def sub_method(lf, b):
25        print('Printing from class C:', b)
26        super().sub_method(b + 1)
27
28
29if __name__ == '__main__':
30      c = C()
31      c.sub_method(1)
32
33# Initializing: class C
34# Initializing: class B
35# Initializing: class A
36# Printing from class C: 1
37# Printing from class B: 2
38# Printing from class A: 3
c = C() 创建了⼀个class C的实例,然后可以看到初始化是从C->B->A的。难以忍耐漫画
c.sub_method(1) ⾸先调⽤了C类⾥的sub_method(),输出了1,然后通过super().sub_method(b + 1)调⽤了B类⾥的sub_method()。可以看到C类⾥的super()就是代替了class C(B)⾥的B类
第⼆步:
super(Net, lf).__init__()
Python中的super(Net, lf).__init__()是指⾸先找到Net的⽗类(⽐如是类NNet),然后把类Net的对象lf转换为类NNet的对象,然后“被转换”的类NNet对象调⽤⾃⼰的init函数,其实简单理解就是⼦类
把⽗类的__init__()放到⾃⼰的__init__()当中,这样⼦类就有了⽗类的__init__()的那些东西。
回过头来看看我们的我们最上⾯的代码,Net类继承nn.,super(Net, lf).__init__()就是对继承⾃⽗类nn.Module的属性进⾏初始化。⽽且是⽤nn.Module的初始化⽅法来初始化继承的属性。
1class Net(nn.Module):
2
3    def __init__(lf):
4        super(Net, lf).__init__()
5        # 输⼊图像channel:1;输出channel:6;5x5卷积核
6        lf.conv1 = nn.Conv2d(1, 6, 5)
震动的近义词
7
也就是说,⼦类继承了⽗类的所有属性和⽅法,⽗类属性⾃然会⽤⽗类⽅法来进⾏初始化。
1class Person:
2    def __init__(lf,name,gender):
3        lf.name = name
4        lf.gender = gender
5    def printinfo(lf):
6        print(lf.der)
7
8class Stu(Person):
9    def __init__(lf,name,gender,school):
10        super(Stu, lf).__init__(name,gender) # 使⽤⽗类的初始化⽅法来初始化⼦类
11        lf.school = school
12    def printinfo(lf): # 对⽗类的printinfo⽅法进⾏重写
信息载体13        print(lf.der,lf.school)
14
15if __name__ == '__main__':
16    stu = Stu('djk','man','nwnu')
17    stu.printinfo()
参考链接:
2blog.csdn/dongjinkun/article/details/114575998
3,def _conv_forward()和def forward什么意思?
我们在使⽤Pytorch的时候,模型训练时,不需要调⽤forward这个函数,只需要在实例化⼀个对象中传⼊对应的参数就可以⾃动调⽤forward 函数。这个称之为前向传播。
1 class Module(nn.Module):
2    def __init__(lf):
3        super().__init__()
4        # ......
5
6    def forward(lf, x):
7        # ......
8        return x
只能向前走
9
10
11data = ......  # 输⼊数据
12
13# 实例化⼀个对象
14model = Module()
15
16# 前向传播
17model(data)
18
19# ⽽不是使⽤下⾯的
20# model.forward(data)
但是实际上model(data)是等价于model.forward(data) 4,

本文发布于:2023-07-13 13:09:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1079875.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   对象   继承
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图