当前位置: 首页 > news >正文

【小白笔记】torch.Tensor 类的实例

张量实例(Tensor Instance)本身自带的能力是什么意思?

人话解释:

(张量实例)本身自带的能力,指的就是像 Python 内建数据类型(如 listint)一样,张量这个“数据变量”自己就附带了一系列可以直接使用的操作方法**。

1. 概念类比(以 Python 基础类型为例)
数据类型实例(变量)自带的能力(方法)调用方式
列表 (list)my_list = [1, 2].append(x) (在末尾添加)my_list.append(3)
字符串 (str)my_string = "hello".upper() (转大写)my_string.upper()
张量 (torch.Tensor)X_test.to(device) (移动到设备)X_test.to('cuda')
2. 在 PyTorch 中的具体意义

在 PyTorch 中,当你执行了 X_test = torch.from_numpy(X_test).float() 之后:

  • X_test 不再是一个普通的 NumPy 数组或 Python 列表,它现在是一个 torch.Tensor 类的实例
  • 因为它是 torch.Tensor,它就自动继承torch.Tensor 类定义的所有方法。
  • 这些方法就是我们所说的“自带的能力”,它们被设计用于高效地、直接地操作张量中的数据。

这是一个非常细致的问题,它涉及到 Python 中的面向对象编程方法链式调用的原理。没有直接看到 torch.Tensor,但它确实在幕后被创建了。

人话解释: 虽然代码里没有写出 torch.Tensor(),但是 torch.from_numpy() 这个函数返回的结果,就是一个 torch.Tensor 类的实例。

详细分解:

来看您这行代码:

X_test=torch.from_numpy(X_test)⏟第一步:返回一个 Tensor 实例⏟第二步:调用这个实例的 .float() 方法.float()\text{X\_test} = \underbrace{\underbrace{\text{torch.from\_numpy}(\text{X\_test})}_{\text{第一步:返回一个 Tensor 实例}}}_{\text{第二步:调用这个实例的 .float() 方法}}\text{.float()}X_test=第二步:调用这个实例的 .float() 方法第一步:返回一个 Tensor 实例torch.from_numpy(X_test).float()

第一步:torch.from_numpy(X_test)
  • 功能: 这是一个属于 torch 命名空间的静态函数(工厂函数)。它的工作就是接收一个 NumPy 数组作为输入,然后制造返回一个新的 PyTorch 张量对象。
  • 返回类型: 这个函数返回的对象,它的类型就是 torch.Tensor
第二步:.float()
  • 功能: 由于第一步返回的对象是一个 torch.Tensor 实例,它自带.float() 这个方法(能力)。
  • .float() 的作用: 这个方法会操作张量自身,将张量内所有数据元素的类型转换为 32 位浮点数(torch.float32)。它执行完操作后,返回的仍然是那个 torch.Tensor 实例(或者一个新类型的新实例)。
总结和记忆点
  1. 没有直接写出,但它就在那里: 你不需要写 X_test = torch.Tensor(torch.from_numpy(X_test)),因为 torch.from_numpy()返回值本身就已经是一个张量实例了。
  2. 方法链 (Chaining): 这种写法叫做方法链式调用
    • A.method1().method2().method3()
    • 只要 method1()返回结果是一个对象,并且这个对象拥有 method2() 的能力,你就可以继续点(.)下去。
    • 在这个例子中,torch.from_numpy(...) 的返回值拥有 .float() 的能力,所以可以直接链式调用。
      例如:
  • X_test.to(self.device):是 Tensor 实例的移动能力。
  • X_test.cpu():是 Tensor 实例从 GPU 移到 CPU 的能力。
  • X_test.unsqueeze(0):是 Tensor 实例改变自己维度(形状)的能力。
  • X_test.pow(2):是 Tensor 实例对自身所有元素进行平方的能力。

总结:

在面向对象编程中,一个实例(对象)就是数据(属性)操作(方法/能力)的结合体。当你用 X_test. 调用方法时,你就是在命令这个张量对象去执行它自己自带的功能

http://www.dtcms.com/a/495537.html

相关文章:

  • 俄语网站开发登录信产部网站
  • 学院门户网站建设自己在线制作logo免费生成器
  • 操作系统——进程管理
  • 在docker运行ros及其可视化
  • Python使用 pandas操作Excel文件并新增列数据
  • 宝塔面板点击ssl证书报错:出错了,面板运行时发生错误!ModuleNotFoundError: No module named ‘OpenSSL‘
  • Django与Tornado框架深度对比:从MVCMTV到高并发架构设计
  • 湖南畅想网站建设大连品牌网站建设公司
  • S4和ECC或者不通CLIENT,不通HANA服务器互相取数
  • Linux中控制台初始化console_init函数的实现
  • pycharm 默认终端设置 cmd
  • JavaScript 加密工具 sojson.v5 全解析:原理、应用与实践
  • 【Python库包】ESMF 库包介绍及安装
  • HarmonyOS ArkUI框架自定义弹窗选型与开发实战
  • 智能体开发(2)智能数据处理Agent
  • Visual Studio在一个解决方案管理多项目属性
  • 网站图片防盗连怎么做韶关营销网站开发
  • 10.17 设置组件导航和页面路由
  • 福田做商城网站建设找哪家公司比较安全简约好看的网站模板免费下载
  • 【GD32F527_EVAL】USB 驱动移植 和 USB CDC Device 接入PC实验
  • 网站开发网站定制查看网站源代码建站可以
  • stm32_QT6怎么打包
  • c 做网站流程如何做做网站
  • 深度剖析大模型Function Calling:从原理到优化策略
  • SQL入门:表关联-从基础到优化实战
  • YOLOv3 技术总结
  • 为什么有些前端开发者能快速交付,有些还在纠结架构设计
  • Calibre(开源电子书管理软件) v8.13.0 官方便携版
  • wordpress数据库端口娄底seo排名
  • 途牛旅游网站建设方案临安区做网站的公司