Función torch.zeros de PyTorch
Manual de referencia de Pytorch torch
torch.zerosEs una función de PyTorch utilizada para crear tensores de ceros. Crea un tensor con la forma especificada, donde todos los elementos se inicializan en 0.
Esta es una de las formas más comunes de inicializar tensores en el aprendizaje profundo, y se utiliza frecuentemente para crear vectores de sesgo (bias), marcadores de posición o inicializar parámetros del modelo.
Definición de la función
torch.zeros(*size, dtype=None, device=None, requires_grad=False, pin_memory=False)
Parámetros:
*size(int): La forma del tensor, por ejemplo3、(3, 4)、(2, 3, 4)etc.dtype(torch.dtype, opcional): Especifica el tipo de dato del tensor, por defectotorch.float32。device(torch.device, opcional): Especifica el dispositivo donde se almacena el tensor.requires_grad(bool, opcional): Indica si se requiere calcular gradientes.pin_memory(bool, opcional): Indica si se utiliza memoria fijada (pinned memory).
Valor de retorno:
torch.Tensor: Devuelve un tensor de ceros.
Ejemplos de uso
A continuación se muestran algunos ejemplos de usotorch.zerosde la función.
Ejemplo 1: Crear un tensor unidimensional de ceros
Ejemplo
# Crear un tensor de ceros con 5 elementos
x = torch.zeros(5)
print(x)
El resultado de salida es:
tensor([0., 0., 0., 0., 0.])
En este ejemplo, creamos un tensor unidimensional de ceros con 5 elementos.
Ejemplo 2: Crear un tensor bidimensional de ceros
Ejemplo
# Crear un tensor de ceros de 3x4 (matriz)
x = torch.zeros(3, 4)
print(x)
print(x.shape)
El resultado de salida es:
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
torch.Size([3, 4])
En este ejemplo, creamos un tensor bidimensional de ceros de 3 filas y 4 columnas.
Ejemplo 3: Crear un tensor de ceros de tipo entero
Ejemplo
# Crear un tensor de ceros de tipo entero
x = torch.zeros(3, 3, dtype=torch.int32)
print(x)
print(x.dtype)
El resultado de salida es:
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">
<span style="color: Green;font-weight:bold;">import</span> torch<br />
<br />
<span style="color: #a50"># 创建需要梯度的全零张量</span><br />
x <span style="color: Gray;">=</span> torch.<span style="color: #05a;">zeros</span><span style="color: Olive;">(</span><span style="color: Maroon;">3</span><span style="color: Gray;">,</span> requires_grad<span style="color: Gray;">=</span><span style="color: Teal;">True</span><span style="color: Olive;">)</span><br />
<br />
<span style="color: Green;font-weight:bold;">print</span><span style="color: Olive;">(</span>x.<span style="color: #05a;">requires_grad</span><span style="color: Olive;">)</span><br />
</div>
</div>
<p>输出结果为:</p>
<pre>
True
En este ejemplo, creamos un tensor de ceros que requiere cálculo de gradientes, lo cual se utiliza para parámetros aprendibles en el entrenamiento de redes neuronales.
Ejemplo 5: Crear un tensor de ceros en un dispositivo CUDA
Ejemplo
# Comprobar si CUDA está disponible
if torch.cuda.is_available():
# Crear un tensor de ceros en el dispositivo CUDA
x = torch.zeros(3, 4, device='cuda')
print(x.device)
else:
print("CUDA no disponible")
El resultado de salida es:
cuda:0
En este ejemplo, comprobamos si CUDA está disponible y luego creamos un tensor de ceros en la GPU.
Diferencia entre torch.zeros y torch.zeros_like
torch.zeros(*size): Crea un tensor de ceros según el tamaño especificado.torch.zeros_like(input): Crea un tensor de ceros según la forma del tensor de entrada, conservando el dtype y el device del tensor de entrada.
Casos de uso
torch.zerosLa función se utiliza comúnmente en los siguientes casos:
- Inicializar vectores de sesgo (bias): En las redes neuronales, el sesgo (bias) normalmente se inicializa en cero.
- Crear marcadores de posición: Como marcadores de posición de entrada en grafos computacionales dinámicos.
- Rellenar arrays: Crear un array inicializado en ceros para rellenarlo posteriormente con datos.
- Operaciones matemáticas: En operaciones de acumulación que necesitan cero como valor inicial.
Notas
- Por defecto,
torch.zerosse crea unfloat32tensor del tipo. - Si necesita crear un tensor de ceros con la misma forma que otro tensor, puede usar
torch.zeros_like()。 - Los tensores de ceros se utilizan comúnmente como inicialización en el aprendizaje profundo, pero en algunos casos pueden causar el problema de desvanecimiento del gradiente.
Otras extensiones