pytorch系列-----1 python class 中 的__call__方法
鉴于pytorch在科学论文领域用的越来越多,想写一个系列文章,讲述pytorch的用法。
要学习pytorch,一个前提是 知道python calss中的__call__
和__init__
方法.
简单的说就是:
-
__init__
: 类的初始化函数,蕾丝布c++的构造函数 -
__call___
: 使得类对象具有类似函数的功能。
__init__
比较好理解,现在主要看一下 __call__
的功能示例:
class A():
def __call__(self):
print('i can be called like a function')
a = A()
a()
out:
i can be called like a function
让我们在调用时传入参数如何?
class A():
def __call__(self, param):
print('i can called like a function')
print('掺入参数的类型是:', type(param))
a = A()
a('i')
out:
i can called like a function
掺入参数的类型是: <class ‘str’>
发现对象a的表现完全类似一个函数。
那当然也可以在__call__
里调用其他的函数啊,
在__call__
函数中调用forward
函数,并且返回调用的结果
class A():
def __call__(self, param):
print('i can called like a function')
print('传入参数的类型是:{} 值为: {}'.format(type(param), param))
res = self.forward(param)
return res
def forward(self, input_):
print('forward 函数被调用了')
print('in forward, 传入参数类型是:{} 值为: {}'.format( type(input_), input_))
return input_
a = A()
input_param = a('i')
print("对象a传入的参数是:", input_param)
out:
i can called like a function
传入参数的类型是:<class ‘str’> 值为: i
forward 函数被调用了
in forward, 传入参数类型是:<class ‘str’> 值为: i
对象a传入的参数是: i
现在我们将初始化函数__init__
也加上,来看一下:
在对象初始化时确定初始年龄,通过调用a(2)
为对象年龄增加2岁,
class A():
def __init__(self, init_age):
super().__init__()
print('我年龄是:',init_age)
self.age = init_age
def __call__(self, added_age):
res = self.forward(added_age)
return res
def forward(self, input_):
print('forward 函数被调用了')
return input_ + self.age
print('对象初始化。。。。')
a = A(10)
input_param = a(2)
print("我现在的年龄是:", input_param)
out:
对象初始化。。。。
我年龄是: 10
forward 函数被调用了
我现在的年龄是: 12
pytorch主要也是按照__call__
, __init__
,forward
三个函数实现网络层之间的架构的
这博客讲述了pytorch中具体实现:https://blog.csdn.net/dss_dssssd/article/details/82977170
上一篇: MVC中Asp.Net管道(二)
下一篇: 在HTML里web标准是什么
推荐阅读
-
关于python中的__init__与__new__以及__call__三个方法的简单介绍
-
详解Python中的__new__、__init__、__call__三个特殊方法
-
详解Python中的__new__、__init__、__call__三个特殊方法
-
Python中的Function定义方法第1/2页
-
利用python编写R语言案例研究方法中的定位算法(1)——原始数据处理
-
Python中的Function定义方法第1/2页
-
python中__call__()方法的用法
-
python中的__call__方法
-
Pytorch class 中 的__call__方法
-
Python class中的__call__()方法