Функция true_divide
Функция true_divide выполняет поэлементное деление
тензоров. Первым параметром она принимает делимое,
вторым - делитель. Возвращает новый тензор с результатом
деления, всегда в типе данных с плавающей запятой.
Эта функция эквивалентна оператору /, но гарантирует,
что результат будет представлен числом с плавающей точкой,
даже если оба аргумента являются целочисленными тензорами.
Синтаксис
torch.true_divide(dividend, divisor)
Также доступна форма в виде метода тензора:
t.true_divide(divisor)
Пример
Давайте разделим два целочисленных тензора:
import torch
t1 = torch.tensor([4, 5, 6])
t2 = torch.tensor([2, 2, 2])
res = torch.true_divide(t1, t2)
print(res)
Результат выполнения кода:
tensor([2., 2.5, 3.])
Обратите внимание, что результат имеет тип данных
torch.float32, хотя исходные тензоры были
целочисленными.
Пример
Разделим тензор на скаляр:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
res = torch.true_divide(t, 2)
print(res)
Результат выполнения кода:
tensor([0.5, 1., 1.5, 2., 2.5])
Пример
Использование метода тензора для деления на другой тензор:
import torch
t1 = torch.tensor([[3, 6, 9], [12, 15, 18]])
t2 = torch.tensor([[1, 2, 3], [4, 5, 6]])
res = t1.true_divide(t2)
print(res)
Результат выполнения кода:
tensor([
[3., 3., 3.],
[3., 3., 3.],
])
Как видно из примера, деление выполняется поэлементно, а результат всегда содержит дробную часть, даже если деление выполняется нацело.
Пример
Сравнение с оператором / для целочисленных тензоров:
import torch
t1 = torch.tensor([5, 7, 9])
t2 = torch.tensor([2, 3, 4])
div_operator = t1 / t2
true_div = torch.true_divide(t1, t2)
print("Operator /:", div_operator)
print("true_divide:", true_div)
Результат выполнения кода:
Operator /: tensor([2, 2, 2])
true_divide: tensor([2.5, 2.3333, 2.25])
В этом примере видно, что оператор / для целых чисел
выполняет целочисленное деление (с округлением вниз),
а true_divide всегда возвращает вещественный результат.
Смотрите также
-
функцию
div,
которая выполняет деление с округлением вниз для целых чисел -
функцию
floor_divide,
которая выполняет целочисленное деление с округлением вниз -
функцию
mul,
которая выполняет поэлементное умножение тензоров -
функцию
remainder,
которая возвращает остаток от деления