当前位置: 首页 > 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 是一种高效的张量创建方式,但必须谨慎使用,确保在使用张量之前已经对其内容进行了正确的赋值。

相关文章:

  • 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. 合并区间
  • 韩国第二大轮胎制造商因火灾停产,或影响700万条轮胎销售
  • 美国公布新型核弹B61-13,威力是广岛原子弹的21倍
  • 上海黄浦:新婚夫妻来登记可“摇号”定制无人机表演,每周三对
  • 证监会:证券公司要处理好功能性和盈利性关系,切实维护好投资者利益
  • 河北6人在河道倒污泥被控污染环境案撤诉后,已拿到国赔决定书
  • 这个东西每道菜里都有,却可能让你得一身病,做好这些能避免