Функция fmod
Функция fmod выполняет поэлементное вычисление остатка от деления двух тензоров или тензора и скаляра. Первым параметром передаётся делимое, вторым - делитель. Функция возвращает тензор с остатками, знак которых совпадает со знаком делимого, в отличие от функции remainder, где знак соответствует знаку делителя. Входные тензоры должны иметь одинаковую форму или быть вещаемыми.
Синтаксис
torch.fmod(input, other)
Пример
Давайте вычислим остаток от деления для тензора с положительными числами на скаляр:
import torch
t = torch.tensor([5.0, 7.0, 12.0, 15.0])
res = torch.fmod(t, 4.0)
print(res)
Результат выполнения кода:
tensor([1., 3., 0., 3.])
Пример
Теперь рассмотрим случай с отрицательным делимым. Обратите внимание, что знак результата совпадает со знаком делимого:
import torch
t = torch.tensor([-5.0, -7.0, 12.0, -15.0])
res = torch.fmod(t, 4.0)
print(res)
Результат выполнения кода:
tensor([-1., -3., 0., -3.])
Пример
Функция поддерживает вещание. Вычислим остаток от деления двух тензоров с разными формами:
import torch
t1 = torch.tensor([10.0, 20.0, 30.0])
t2 = torch.tensor([6.0])
res = torch.fmod(t1, t2)
print(res)
Результат выполнения кода:
tensor([4., 2., 0.])
Пример
Сравним работу fmod и remainder для отрицательного делимого. Знак результата fmod совпадает со знаком делимого, а remainder - со знаком делителя:
import torch
t = torch.tensor([-7.0, -7.0])
div = 4.0
res_fmod = torch.fmod(t, div)
res_rem = torch.remainder(t, div)
print("fmod:", res_fmod)
print("remainder:", res_rem)
Результат выполнения кода:
fmod: tensor([-3., -3.])
remainder: tensor([1., 1.])
Смотрите также
-
функцию
remainder,
которая также вычисляет остаток, но знак результата совпадает со знаком делителя -
функцию
floor_divide,
которая выполняет деление с округлением вниз и возвращает целую часть -
функцию
div,
которая выполняет деление и может возвращать как вещественное, так и целое значение -
функцию
frac,
которая возвращает дробную часть тензора