现在位置: 首页 > PyTorch 教程 > 正文

PyTorch torch.zeros 函数


Pytorch torch 参考手册 Pytorch torch 参考手册

torch.zeros 是 PyTorch 中用于创建全零张量的函数。它会创建一个指定形状的张量,所有元素都初始化为 0。

这是在深度学习中初始化张量最常用的方式之一,常用于创建偏置向量、占位符或初始化模型参数。

函数定义

torch.zeros(*size, dtype=None, device=None, requires_grad=False, pin_memory=False)

参数:

  • *size (int): 张量的形状,例如 3(3, 4)(2, 3, 4) 等。
  • dtype (torch.dtype, 可选): 指定张量的数据类型,默认为 torch.float32
  • device (torch.device, 可选): 指定张量存储的设备。
  • requires_grad (bool, 可选): 是否需要计算梯度。
  • pin_memory (bool, 可选): 是否使用锁页内存。

返回值:

  • torch.Tensor: 返回一个全零张量。

使用示例

以下是一些使用 torch.zeros 函数的示例。

示例 1: 创建一维全零张量

实例

import torch

# 创建包含 5 个元素的全零张量
x = torch.zeros(5)

print(x)

输出结果为:

tensor([0., 0., 0., 0., 0.])

在这个示例中,我们创建了一个包含 5 个元素的一维全零张量。

示例 2: 创建二维全零张量

实例

import torch

# 创建 3x4 的全零张量(矩阵)
x = torch.zeros(3, 4)

print(x)
print(x.shape)

输出结果为:

tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])
torch.Size([3, 4])

在这个示例中,我们创建了一个 3 行 4 列的二维全零张量。

示例 3: 创建整数类型的全零张量

实例

import torch

# 创建整数类型的全零张量
x = torch.zeros(3, 3, dtype=torch.int32)

print(x)
print(x.dtype)

输出结果为:

tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]], dtype=torch.int32)
</p>

<p>在这个示例中,我们创建了整数类型的全零张量,默认的 <code>float32</code> 被覆盖为 <code>int32</code>。</p>

<h3>示例 4: 创建需要梯度的全零张量</h3>

<div class="example">
<h2 class="example">实例</h2>
<div class="example_code">
import torch

# 创建需要梯度的全零张量
x = torch.zeros(3, requires_grad=True)

print(x.requires_grad)
</div> </div> <p>输出结果为:</p> <pre> True

在这个示例中,我们创建了一个需要计算梯度的全零张量,这在训练神经网络时用于可学习参数。

示例 5: 在 CUDA 设备上创建全零张量

实例

import torch

# 检查 CUDA 是否可用
if torch.cuda.is_available():
    # 在 CUDA 设备上创建全零张量
    x = torch.zeros(3, 4, device='cuda')
    print(x.device)
else:
    print("CUDA 不可用")

输出结果为:

cuda:0

在这个示例中,我们检查 CUDA 是否可用,然后在 GPU 上创建全零张量。


torch.zeros 与 torch.zeros_like 的区别

  • torch.zeros(*size): 根据指定的尺寸创建全零张量。
  • torch.zeros_like(input): 根据输入张量的形状创建全零张量,保留输入张量的 dtype 和 device。

使用场景

torch.zeros 函数通常用于以下场景:

  1. 初始化偏置向量: 在神经网络中,偏置通常初始化为零。
  2. 创建占位符: 在动态计算图中作为输入占位符。
  3. 填充数组: 创建一个初始为零的数组,后续填充数据。
  4. 数学运算: 在需要零作为起始值的累积运算中。

注意事项

  • 默认情况下,torch.zeros 创建的是 float32 类型的张量。
  • 如果需要创建与另一个张量相同形状的全零张量,可以使用 torch.zeros_like()
  • 全零张量在深度学习中常用作初始化,但在某些情况下可能导致梯度消失问题。

Pytorch torch 参考手册 Pytorch torch 参考手册