Функция PyTorch torch.sum
Справочное руководство Pytorch torch
torch.sum— это функция в PyTorch, используемая для вычисления суммы элементов тензора. Она может вычислять сумму всех элементов или по указанным измерениям.
Это часто используемая операция редукции в глубоком обучении, применяемая в таких сценариях, как вычисление функции потерь и статистика.
Определение функции
torch.sum(input, dim, keepdim, dtype, out)
Parameters:
input(Tensor): Входной тензор.dim(int или tuple из int, необязательно): измерение(я) для вычисления. ЕслиNone, то вычисляется сумма всех элементов.keepdim(bool, необязательно): сохранять ли измерение. По умолчаниюFalse。dtype(torch.dtype, необязательно): тип данных выходного тензора.out(Tensor, необязательный): Выходной тензор.
Возвращаемое значение:
torch.Tensor: Возвращает вычисленный тензор.
Примеры использования
Пример 1: Сумма всех элементов
Пример
import torch
# Создать тензор
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Вычислить сумму всех элементов
total = torch.sum(x)
print("Тензор:")
print(x)
print("Сумма элементов:", total)
# Создать тензор
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Вычислить сумму всех элементов
total = torch.sum(x)
print("Тензор:")
print(x)
print("Сумма элементов:", total)
Результат вывода:
张量:
tensor([[1, 2, 3],
[4, 5, 6]])
元素之和: tensor(21)
Пример 2: Суммирование по указанному измерению
Пример
import torch
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Сумма по dim=0 (столбцы)
sum_dim0 = torch.sum(x, dim=0)
print("Сумма по dim=0:", sum_dim0)
# Сумма по dim=1 (строки)
sum_dim1 = torch.sum(x, dim=1)
print("Сумма по dim=1:", sum_dim1)
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Сумма по dim=0 (столбцы)
sum_dim0 = torch.sum(x, dim=0)
print("Сумма по dim=0:", sum_dim0)
# Сумма по dim=1 (строки)
sum_dim1 = torch.sum(x, dim=1)
print("Сумма по dim=1:", sum_dim1)
Результат вывода:
沿 dim=0 求和: tensor([5, 7, 9]) 沿 dim=1 求和: tensor([ 6, 15])
Пример 3: Использование keepdim для сохранения размерностей
Пример
import torch
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Без сохранения размерности
sum1 = torch.sum(x, dim=0)
print("Без сохранения размерности:", sum1.shape)
# Сохранить размерность
sum2 = torch.sum(x, dim=0, keepdim=True)
print("С сохранением размерности:", sum2.shape)
print(sum2)
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
# Без сохранения размерности
sum1 = torch.sum(x, dim=0)
print("Без сохранения размерности:", sum1.shape)
# Сохранить размерность
sum2 = torch.sum(x, dim=0, keepdim=True)
print("С сохранением размерности:", sum2.shape)
print(sum2)
Результат вывода:
不保持维度: torch.Size([3]) 保持维度: torch.Size([1, 3]) tensor([[5, 7, 9]])
Пример 4: Вычисление потерь в нейронных сетях
Пример
import torch
# Имитация предсказанных и истинных значений
predictions = torch.tensor([0.1, 0.9, 0.8, 0.3])
targets = torch.tensor([0.0, 1.0, 1.0, 0.0])
# Вычислить потерю среднеквадратичной ошибки
loss = torch.sum((predictions - targets) ** 2) / len(predictions)
print("Потеря MSE:", loss.item())
# Имитация предсказанных и истинных значений
predictions = torch.tensor([0.1, 0.9, 0.8, 0.3])
targets = torch.tensor([0.0, 1.0, 1.0, 0.0])
# Вычислить потерю среднеквадратичной ошибки
loss = torch.sum((predictions - targets) ** 2) / len(predictions)
print("Потеря MSE:", loss.item())
Результат вывода:
MSE 损失: 0.07499999690771103
Другие расширения