要学习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 resdef 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_agedef __call__(self, added_age):res = self.forward(added_age)return resdef 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三个函数实现网络层之间的架构的

首先创建类对象m,然后通过m(input)实际上调用__call__(input),然后__call__(input)调用
forward()函数

这博客讲述了pytorch中具体实现:https://blog.csdn.net/dss_dssssd/article/details/82977170

Pytorch class 中 的__call__方法相关推荐

  1. Python 类中的__call__()方法

    Python call()方法 在类中实现__call__()方法,可以在实例化一个该类的对象后,直接调用该对象,像使用函数一样,这样实现的就是__call__()方法中的内容. 举例: 太长不看版 ...

  2. PyTorch函数中的__call__和forward函数

    初学nn.Module,看不懂各种调用,后来看明白了,估计会忘,故写篇笔记记录 init & call 代码: class A():def __init__(self):print('init ...

  3. Python3中__call__方法介绍

    如果Python3类中有__call__方法,那么此类实例的行为类似于函数并且可以像函数一样被调用.当实例作为函数被调用时,如果定义了此方法,则x(arg1, arg2, -)是x.__call__( ...

  4. python中的__str__ __name__ 和__call__方法

    通过__str__( )函数可以打印对象的属性信息,方便我们调试代码. #通过__str__( )函数可以打印对象的属性信息,方便我们调试代码.class aa(object):def __init_ ...

  5. python 类方法装饰器_python类装饰器即__call__方法

    上一篇中我对学习过程中的装饰器进行了总结和整理,这一节简单整理下类装饰器 1.类中的__call__方法: 我们在定义好一个类后,实例化出一个对象,如果对这个对象以直接在后边加括号的方式进行调用,程序 ...

  6. PyTorch中nn.Module类中__call__方法介绍

    在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[-, Any] = ...

  7. Lesson 15.2 学习率调度在PyTorch中的实现方法

    Lesson 15.2 学习率调度在PyTorch中的实现方法   学习率调度作为模型优化的重要方法,也集成在了PyTorch的optim模块中.我们可以通过下述代码将学习率调度模块进行导入. fro ...

  8. Python 中的特殊方法(定制类):__str__、__cmp__、__len__、数学运算、类型转换、@property运用、__slots__和__call__函数

    Python中的特殊方法 Python的特殊方法定义在 class中,不需要直接进行显示调用,Python的某些操作符或者函数会自动调用对应的特殊方法.这些方法如:__str__().__len__( ...

  9. PyTorch中的topk方法以及分类Top-K准确率的实现

    PyTorch中的topk方法以及分类Top-K准确率的实现 Top-K 准确率 在分类任务中的类别数很多时(如ImageNet中1000类),通常任务是比较困难的,有时模型虽然不能准确地将groun ...

最新文章

  1. SQL优化基础 使用索引(一个小例子)
  2. 如何使用Docker安装Mycat中间件 | 实现主从的读写分离,搭建属于你的Mysql 集群 | 来看看这篇吧
  3. faceswap深度学习AI实现视频换脸详解
  4. Bug人生---超越bug杀手
  5. apache.camel_Apache Camel 2.14中的更多指标
  6. rmi远程代码执行漏洞_WebSphere 远程代码执行漏洞浅析(CVE20204450)
  7. DCMTK DCMSCU例子
  8. 《Android 面试指南》来自腾讯、阿里巴巴、欢聚时代、美团、聚美优品、悦跑圈等大佬分享的面经...
  9. java 单元测试assert_java – 使用assertTrue与其他人进行单元测试
  10. 【目标跟踪】基于matlab帧差法结合卡尔曼滤波行人姿态识别【含Matlab源码 1127期】
  11. plex android tv版,PLEX,目前最佳的IPTV直播软件,没有之一
  12. 流水线作业调度问题-动态规划(运用Johnson算法)
  13. 在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
  14. matlab显示数据类型,MATLAB查看数据类型
  15. unity期末个人作品-落笔洞寻宝探险之旅(寻宝游戏)
  16. thinkphp6获取字符串中的中文首字母
  17. C#贪吃蛇游戏(全代码)
  18. 永不熄灭的火花·《煎饼侠》
  19. Python字符串总结大全
  20. shader实例:实现类似宝可梦 Pokemon 的战斗转场

热门文章

  1. 测开之路五十:monggodb安装与初步使用
  2. TCP系列51—拥塞控制—14、TLP、ER与拥塞控制
  3. python function terminated un_Python: 僵尸进程的产生和清除方法
  4. ireport交叉报表 crosstab排序_质性数据分析软件NVivo教程:交叉表查询
  5. alter procedure是什么意思_板上钉钉的意思
  6. Web前端程序员必备 前端面试题汇总(1)
  7. C语言三目运算符用法详解
  8. A - C语言实验——最值
  9. python 获取excel文本框_简单使用python做excel多文件批量搜索(带图形界面)(已更新)...
  10. 用集合return多个值_Python拾珍:用这些功能写出更简洁、更可读或更高效的代码