PyTorch torch.zeros 函数
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)
# 创建包含 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)
# 创建 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)
# 创建整数类型的全零张量
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 是否可用
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 函数通常用于以下场景:
- 初始化偏置向量: 在神经网络中,偏置通常初始化为零。
- 创建占位符: 在动态计算图中作为输入占位符。
- 填充数组: 创建一个初始为零的数组,后续填充数据。
- 数学运算: 在需要零作为起始值的累积运算中。
注意事项
- 默认情况下,
torch.zeros创建的是float32类型的张量。 - 如果需要创建与另一个张量相同形状的全零张量,可以使用
torch.zeros_like()。 - 全零张量在深度学习中常用作初始化,但在某些情况下可能导致梯度消失问题。

Pytorch torch 参考手册