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

Функция allclose

Функция allclose проверяет, равны ли два тензора с учётом заданных допусков. Она возвращает True, если для всех элементов выполняется условие: |a - b| <= (atol + rtol * |b|). Первым параметром передаётся первый тензор, вторым - второй тензор. Третьим параметром можно передать абсолютный допуск atol (по умолчанию 1e-8), четвёртым - относительный допуск rtol (по умолчанию 1e-5). Функция полезна при тестировании, когда из-за ошибок округления числа не совпадают точно.

Синтаксис

torch.allclose(a, b, rtol=1e-05, atol=1e-08)

Пример

Сравним два тензора, которые отличаются на очень маленькую величину:

import torch t1 = torch.tensor([1.0, 2.0, 3.0]) t2 = torch.tensor([1.0, 2.0, 3.0000001]) res = torch.allclose(t1, t2) print(res)

Результат выполнения кода:

"True"

Функция вернула True, так как разница меньше допусков.

Пример

Теперь увеличим разницу и явно зададим малый абсолютный допуск:

import torch t1 = torch.tensor([1.0, 2.0, 3.0]) t2 = torch.tensor([1.0, 2.0, 3.1]) res = torch.allclose(t1, t2, atol=1e-3) print(res)

Результат выполнения кода:

"False"

Функция вернула False, так как разница превысила заданный допуск.

Пример

Сравним двумерные тензоры с большими значениями, где относительный допуск играет важную роль:

import torch t1 = torch.tensor([[1e5, 2e5], [3e5, 4e5]]) t2 = torch.tensor([[1e5, 2e5], [3e5, 4e5 + 1e-3]]) res = torch.allclose(t1, t2) print(res)

Результат выполнения кода:

"True"

Несмотря на абсолютную разницу 1e-3, функция вернула True из-за большого относительного допуска для больших чисел.

Пример

Используем allclose для проверки работы модели после обучения на синтетических данных:

import torch torch.manual_seed(0) x = torch.randn(3, 3) layer = torch.nn.Linear(3, 3) y1 = layer(x) # Сохраняем состояние и восстанавливаем state = layer.state_dict() layer.load_state_dict(state) y2 = layer(x) res = torch.allclose(y1, y2) print(res)

Результат выполнения кода:

"True"

Функция подтвердила, что выходы модели совпадают после восстановления весов.

Смотрите также

  • функцию isclose,
    которая поэлементно проверяет близость значений с допуском
  • функцию eq,
    которая проверяет поэлементное равенство без допуска
  • функцию ne,
    которая проверяет поэлементное неравенство
  • функцию abs,
    которая вычисляет абсолютные значения элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить