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

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

    • 详细解释
      • 1. 基本功能
      • 2. 语法
      • 3. 示例代码
        • 示例 1:创建一个 5 的未初始化张量
        • 示例 2:创建一个 2×3 的未初始化张量
        • 示例 3:指定数据类型和设备
      • 4. 注意事项


torch.empty 是 PyTorch 中的一个函数,用于创建一个指定形状的张量,但不会对张量中的数据进行初始化。这意味着生成的张量包含内存中随机的“垃圾数据”,它们的值是不确定的。


详细解释

1. 基本功能

  • 未初始化内存
    torch.empty 分配内存空间给张量,但不会对空间中的每个元素进行赋值初始化。结果是张量中的数据可能是内存中之前残留的随机值,因此其值是不可预测的。

  • 用途
    当你需要一个张量来存放后续计算的结果时,可以使用 torch.empty 以节省初始化的时间开销。如果你马上会用新的数据覆盖这些值,使用 torch.empty 是一种高效的方法。

2. 语法

torch.empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  • size:张量的形状,可以是一个整数序列。例如 (3, 4) 表示创建一个 3 行 4 列的张量。
  • dtype:数据类型,例如 torch.float32torch.int64 等。默认取决于 PyTorch 的全局设置。
  • device:设备,可以是 "cpu""cuda" 等,用于指定张量存放的位置。
  • requires_grad:是否对张量计算梯度,默认为 False

3. 示例代码

示例 1:创建一个 5 的未初始化张量
import torch

x = torch.empty(5)
print(x)

输出可能类似于(每次运行结果可能不同):

tensor([3.1183e-25, 1.2416e-42, 0.0000e+00, 0.0000e+00, 0.0000e+00])
示例 2:创建一个 2×3 的未初始化张量
import torch

x = torch.empty(2, 3)
print(x)

输出可能类似于(每次运行结果可能不同):

tensor([[4.6000e-41, 0.0000e+00, 2.8026e-45],
        [0.0000e+00, 4.6000e-41, 0.0000e+00]])

这里输出的数字是内存中的随机值。

示例 3:指定数据类型和设备
x = torch.empty((2, 3), dtype=torch.float32, device='cpu', requires_grad=True)
print(x)

这将创建一个 2×3 的张量,数据类型为 float32,在 CPU 上,并且设置了 requires_grad=True 用于后续自动求导。

4. 注意事项

  • 不要依赖初始值
    因为 torch.empty 返回的张量中数据是未初始化的,所以在使用前必须显式赋值或覆盖这些数据,否则可能导致错误的计算结果。

  • 与 torch.zeros/torch.ones 的区别
    如果你需要一个所有元素初始化为 0 的张量,可以使用 torch.zeros;如果需要初始化为 1,则使用 torch.ones
    torch.empty 则更快,因为它不执行初始化操作,但其内容不确定。


torch.empty 是一种高效的张量创建方式,但必须谨慎使用,确保在使用张量之前已经对其内容进行了正确的赋值。

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

相关文章:

  • python中a is None 和 a==None有区别吗
  • 簡易傢俬購物Apps
  • 设计模式(行为型)-观察者模式
  • Linux内核传输层源码分析SCTP
  • IP关联的定义和避免方法
  • 高可用环境下Nginx服务管理脚本优化实践
  • 应用商店上新:Couchbase Enterprise Server集群
  • 【RHCE实验】搭建主从DNS、WEB等服务器
  • Spring Boot整合JWT 实现双Token机制
  • Oracle GoldenGate 全面解析
  • Description of a Poisson Imagery Super Resolution Algorithm 论文阅读
  • 管家婆实用贴-如何设置打印机共享
  • Vue.js 与 RESTful API 集成之处理 GET、POST 请求
  • Flutter_学习记录_状态管理之GetX
  • Spring Security 教程:从入门到精通(含 OAuth2 接入)
  • 利用JavaScript在网页中获取当前的时间并展现在网页上
  • 【算法day13】最长公共前缀
  • 接上一篇,C++中,如何设计等价于Qt的信号与槽机制。
  • TCP/IP四层网络模型
  • LeetCode hot 100 每日一题(10)——56. 合并区间
  • Chainlit 自定义元素开发指南:使用 JSX 和受限导入实现交互式界面
  • 软件工程:数据字典
  • 图解AUTOSAR_CP_WatchdogDriver
  • Python的类和对象(4)
  • Python函数默认参数为什么不能用可变对象
  • uniapp vue3项目定义全局变量,切换底部babar时根据条件刷新页面
  • Spring中Bean的自动装配
  • 电脑型号与尺寸
  • 大数据学习拓展——Minio安装与使用
  • Unity Shader - UI Sprite Shader之简单抠图效果