欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

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

2025/3/19 6:39:28 来源:https://blog.csdn.net/xzs1210652636/article/details/146323188  浏览:    关键词: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 torchx = 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 torchx = 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 是一种高效的张量创建方式,但必须谨慎使用,确保在使用张量之前已经对其内容进行了正确的赋值。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词