Función torch.sum de PyTorch
Manual de referencia de Pytorch torch
torch.sumEs una función de PyTorch utilizada para calcular la suma de los elementos de un tensor. Puede calcular la suma de todos los elementos, o a lo largo de una dimensión especificada.
Esta es una operación de reducción común en el aprendizaje profundo, utilizada en escenarios como el cálculo de pérdidas y estadísticas.
Definición de la función
torch.sum(input, dim, keepdim, dtype, out)
Parámetros:
input(Tensor): El tensor de entrada.dim(int o tupla de int, opcional): La dimensión a calcular. Si esNone, entonces se calcula la suma de todos los elementos.keepdim(bool, opcional): Si se mantiene la dimensión. El valor predeterminado esFalse。dtype(torch.dtype, opcional): El tipo de dato del tensor de salida.out(Tensor, opcional): El tensor de salida.
Valor de retorno:
torch.Tensor: Devuelve el tensor calculado.
Ejemplos de uso
Ejemplo 1: Calcular la suma de todos los elementos
Ejemplo
import torch
# Crear el tensor
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Calcular la suma de todos los elementos
total = torch.sum(x)
print("Tensor:")
print(x)
print("Suma de los elementos:", total)
# Crear el tensor
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Calcular la suma de todos los elementos
total = torch.sum(x)
print("Tensor:")
print(x)
print("Suma de los elementos:", total)
El resultado de salida es:
张量:
tensor([[1, 2, 3],
[4, 5, 6]])
元素之和: tensor(21)
Ejemplo 2: Sumar a lo largo de una dimensión especificada
Ejemplo
import torch
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Sumar a lo largo de dim=0 (columnas)
sum_dim0 = torch.sum(x, dim=0)
print("Suma a lo largo de dim=0:", sum_dim0)
# Sumar a lo largo de dim=1 (filas)
sum_dim1 = torch.sum(x, dim=1)
print("Suma a lo largo de dim=1:", sum_dim1)
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Sumar a lo largo de dim=0 (columnas)
sum_dim0 = torch.sum(x, dim=0)
print("Suma a lo largo de dim=0:", sum_dim0)
# Sumar a lo largo de dim=1 (filas)
sum_dim1 = torch.sum(x, dim=1)
print("Suma a lo largo de dim=1:", sum_dim1)
El resultado de salida es:
沿 dim=0 求和: tensor([5, 7, 9]) 沿 dim=1 求和: tensor([ 6, 15])
Ejemplo 3: Usar keepdim para mantener la dimensión
Ejemplo
import torch
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Sin mantener la dimensión
sum1 = torch.sum(x, dim=0)
print("Sin mantener la dimensión:", sum1.shape)
# Mantener la dimensión
sum2 = torch.sum(x, dim=0, keepdim=True)
print("Mantener la dimensión:", sum2.shape)
print(sum2)
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Sin mantener la dimensión
sum1 = torch.sum(x, dim=0)
print("Sin mantener la dimensión:", sum1.shape)
# Mantener la dimensión
sum2 = torch.sum(x, dim=0, keepdim=True)
print("Mantener la dimensión:", sum2.shape)
print(sum2)
El resultado de salida es:
不保持维度: torch.Size([3]) 保持维度: torch.Size([1, 3]) tensor([[5, 7, 9]])
Ejemplo 4: Calcular la pérdida en una red neuronal
Ejemplo
import torch
# Simular valores predichos y valores reales
predictions = torch.tensor([0.1, 0.9, 0.8, 0.3])
targets = torch.tensor([0.0, 1.0, 1.0, 0.0])
# Calcular la pérdida de error cuadrático medio
loss = torch.sum((predictions - targets) ** 2) / len(predictions)
print("Pérdida MSE:", loss.item())
# Simular valores predichos y valores reales
predictions = torch.tensor([0.1, 0.9, 0.8, 0.3])
targets = torch.tensor([0.0, 1.0, 1.0, 0.0])
# Calcular la pérdida de error cuadrático medio
loss = torch.sum((predictions - targets) ** 2) / len(predictions)
print("Pérdida MSE:", loss.item())
El resultado de salida es:
MSE 损失: 0.07499999690771103
Otras extensiones