关于pytorch中直接调用对象

news/2025/3/26 17:11:47/文章来源:https://www.cnblogs.com/VickyWu/p/18790098

基于之前有C++基础,对于python中的一些函数的用法总会有些疑问。
例如,为什么python可以直接调用对象,而不是调用对象里的函数呢?

以下为包含__call__函数的类的调用

除此之外, 在PyTorch 中,所有继承自 nn.Module 的类都继承了一个特殊的 call() 方法。

# 使用ToTensor创建一个对象
tensor_trans=transforms.ToTensor()
# 这里使用了magic function,ToTensor类中包含了__call__()函数,所以可以直接将新建的对象实例当成函数使用,并传入参数
tensor_img=tensor_trans(img)

可以看到上面将ToTensor()创建的实例tensor_trans直接当函数在使用,直接向它里面传入了img参数,这样实际上会调用__call__()函数,得到的返回值也是__call__()函数的返回值

以下为另一种使用到__call__的情况(call自动调用call里面所包含的一些函数,例如forward)

实际上
image

class MM(nn.module):def __init__(self):super(MM,self).__init__()def forward(self,input):output=input+1return outputmm=MM()
output=mm(torch.tensor(1.0))
print(output)

上面的代码展示了在我们继承自nn.module类的自定义类中,定义了forward函数,那么为什么可以直接通过mm(torch.tensor(1.0))来直接调用类呢?
因为在PyTorch 中,所有继承自 nn.Module 的类都继承了一个特殊的 call() 方法,而call会自动调用它内部的forward函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904955.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事务注解@Transactional

目录 1、属性介绍 2、传播机制准备例子总结3、原理 4、失效场景 一、属性介绍 1、isolation 属性 事务的隔离级别,默认值为 Isolation.DEFAULT。可选的值有:Isolation.DEFAULT:使用底层数据库默认的隔离级别Isolation.READ_UNCOMMITTED:读取未提交数据(会出现脏读,不可重…

Nature | 整合空间转录组与GWAS数据绘制人复杂性状细胞空间图谱

这篇文章是2025年3月发表在《Nature》杂志上的一篇研究,标题为“Spatially resolved mapping of cells associated with human complex traits”。这篇文章通过开发一种名为gsMap的计算方法,整合高分辨率空间转录组(ST)数据与全基因组关联研究(GWAS)统计结果,实现对人类…

【笔记】力扣 102. 二叉树的层序遍历★

102. 二叉树的层序遍历 中等 提示 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1:输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例 2: 输入:root = [1] 输出:[[1]]示例 3: 输入:root = [] 输…

【Azure Container App】在消耗性的Container App Environmnet中无法查看当时正在使用多少CPU多少实例数的替代方案

问题描述 在Azure上使用Container App服务,创建服务环境的时候,选择类型为消耗型(Consumption)。但是,却无法查看当前所有应用中,具体使用了多少个 core (CPU), 目前有多少个实例呢? 如上图,上面的信息是 “-” 问题解答 因为在Container App Environment中所使用的Workl…

Redis短信登录场景

1、Redis短信登录场景 1.1、整体流程1.1、发送短信验证码 @Service @Slf4j public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {@Overridepublic Result sendCode(String phone, HttpSession session) {// 1、校验手机号是否…

威联通TS-466C

威联通TS-466C CPU: Intel奔腾 银牌N6005 四核/ 四线程处理器,可高达 3.3 GHz 内存: 8G 3200MHz (可扩容到16G) 最大硬盘容量: 96T(22TB HDD x 4 + 4TB M.2 x 2)官网硬件参数: https://www.qnap.com.cn/zh-cn/product/ts-466c/specs/hardware 开箱安装硬盘 M2固态安装机械硬盘…

SvelteKit 最新中文文档教程(9)—— 部署静态站点与单页应用

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

FeedbackStream:8 分钟创建 AI 面试智能体;Moshi 开源图像理解实时语音模型 MoshiVis 丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

20234120 2024-2025-2 《Python程序设计》实验一报告

20234120 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2341 姓名: 李卓颖 学号:20234120 实验教师:王志强老师 实验日期:2025年3月22日 必修/选修:专业选修课 一、实验内容 (一)准备工作:1.安装Python和PyCharm:访问Python和PyCharm官…

day:28 postman——断言

一.postman 断言 1.断言再test中 状态码是否等于200: tests["Status code is 200"] = responseCode.code === 200; 断言响应时间小于200ms: tests["Response time is less than 200ms"] = responseTime < 200; 断言响应体包含内容: tests["Bod…

XDA论坛打不开的解决办法

开了梯子反而进不去,关掉全局代理 v2 可以添加两行 https://xdaforums.com/; https://www.xda-developers.com/;