РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytoPmCmAc 56 of 95 menu
◀ ▶

Близость дробных чисел в PyTorch

Дробные значения в ячейках хранятся с округлением, поэтому точное сравнение через == иногда даёт False там, где числа почти совпадают. Функция allclose проверяет попарную близость двух тензоров с учётом малого допуска.

Сложим 0.1 и 0.2 в типе float32 и сравним результат с близким значением 0.3:

import torch total = torch.tensor([0.1], dtype=torch.float32) + torch.tensor([0.2], dtype=torch.float32) mark = torch.tensor([0.3000001], dtype=torch.float32) print(total == mark) # выведет tensor([False]) print(torch.allclose(total, mark)) # выведет True

Если записать 0.3 тем же типом, точное сравнение с суммой может совпасть, но малейшее расхождение снова видно только через близость:

import torch a = torch.tensor([1.0, 2.0], dtype=torch.float32) b = torch.tensor([1.0000001, 2.0], dtype=torch.float32) print(a == b) # выведет tensor([False, True]) print(torch.allclose(a, b)) # выведет True

Когда разница слишком велика, allclose тоже вернёт False:

import torch x = torch.tensor([1.0], dtype=torch.float32) y = torch.tensor([1.5], dtype=torch.float32) print(torch.allclose(x, y)) # выведет False

Создайте два ряда из дробных 1.0, 2.0 и 3.0 так, чтобы во втором ряду первое число чуть отличалось от первого. Выведите маску точного совпадения по ячейкам.

Для тех же двух рядов выведите один логический флаг, показывающий, считаются ли ряды почти одинаковыми.

Создайте два ряда [0.5, 1.0] и [0.5, 2.0] в float32 и выведите один флаг проверки близости между ними.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить