torch.autograd.gradcheck
-
torch.autograd.gradcheck(func, inputs, *, eps=1e-06, atol=1e-05, rtol=0.001, raise_exception=True, check_sparse_nnz=None, nondet_tol=0.0, check_undefined_grad=True, check_grad_dtypes=False, check_batched_grad=False, check_batched_forward_grad=False, check_forward_ad=False, check_backward_ad=True, fast_mode=False, masked=None)[source] -
Проверка градиентов, вычисленных с помощью небольших конечных разностей, по отношению к аналитическим градиентам по тензорам в
inputs, которые являются тензорами с плавающей точкой или комплексным типом и сrequires_grad=True.Проверка между численными и аналитическими градиентами использует
allclose().Для большинства сложных функций, которые мы рассматриваем для оптимизации, понятие якобиана не существует. Вместо этого gradcheck проверяет, совпадают ли числовые и аналитические значения производных Виритера и сопряжённых производных Виритера. Поскольку вычисление градиента выполняется при предположении, что у всей функции есть вещественное значение, мы обрабатываем функции с комплексным выходом особым образом. Для этих функций gradcheck применяется к двум вещественным функциям, соответствующим взятию вещественных компонент комплексных выходов для первой и взятию мнимых компонент комплексных выходов для второй. Для получения более подробной информации обратитесь к Автоматическое дифференцирование для комплексных чисел.
Примечание
Значения по умолчанию предназначены для
inputдвойной точности. Эта проверка, скорее всего, завершится неудачей, еслиinputимеет меньшую точность, например,FloatTensor.Примечание
Gradcheck может завершиться неудачей при оценке в недифференцируемых точках, поскольку численно вычисленные градиенты с помощью конечных разностей могут отличаться от аналитически вычисленных (не обязательно из-за того, что один из них неверен). Для более детального контекста см. Градиенты для недифференцируемых функций.
Предупреждение
Если какой-либо проверяемый тензор в
inputимеет перекрывающиеся области памяти, то есть разные индексы указывают на один и тот же адрес памяти (например, изtorch.expand()), эта проверка, скорее всего, завершится неудачей, потому что числовые градиенты, вычисленные путём возмущения в таких индексах, изменят значения во всех других индексах, которые делят один и тот же адрес памяти.- Параметры
-
- func (функция) – Python-функция, которая принимает тензорные входные данные и возвращает тензор или кортеж тензоров
- inputs (кортеж из Tensor или Tensor) – входные данные для функции
- eps (float, необязательно) – возмущение для конечных разностей
- atol (float, необязательно) – абсолютная погрешность
- rtol (float, необязательно) – относительная погрешность
- raise_exception (bool, необязательно) – указывает, нужно ли вызывать исключение, если проверка завершится неудачей. Исключение даёт более подробную информацию о точном характере сбоя. Это полезно при отладке gradchecks.
-
check_sparse_nnz (bool, необязательно) – если
True, gradcheck допускает вход SparseTensor, и для любых входных SparseTensor gradcheck будет выполнять свою проверку только вnnzпозициях. Аргументcheck_sparse_nnzустарел, используйте вместо него аргументmasked. Еслиcheck_sparse_nnz != masked, генерируется исключение. - nondet_tol (float, необязательно) – погрешность для недетерминированности. При запуске одинаковых входных данных через дифференцирование результаты должны либо точно совпадать (по умолчанию, 0,0), либо находиться в пределах этой погрешности.
-
check_undefined_grad (bool, необязательно) – если
True, проверьте, поддерживаются ли неопределённые градиенты выходов и обрабатываются как нули, дляTensorвыходов. -
check_batched_grad (bool, необязательно) – если
True, проверьте, можем ли мы вычислить градиенты пакетной обработки с помощью поддержки прототипа vmap. По умолчанию False. -
check_batched_forward_grad (bool, необязательно) – если
True, проверяет, можем ли мы вычислить градиенты пакетной обработки вперёд с помощью поддержки вперёд ad и прототипа vmap. По умолчаниюFalse. -
check_forward_ad (bool, необязательно) – если
True, проверьте, что градиенты, вычисленные с помощью AD вперёд, совпадают с численными. По умолчаниюFalse. -
check_backward_ad (bool, необязательно) – если
False, не выполнять никаких проверок, которые зависят от реализации AD в обратном направлении. По умолчаниюTrue. - fast_mode (bool, необязательно) – Быстрый режим для gradcheck и gradgradcheck в настоящее время реализован только для функций R в R. Если ни входные, ни выходные данные не являются комплексными, выполняется более быстрая реализация gradcheck, которая больше не вычисляет весь якобиан; в противном случае мы возвращаемся к медленной реализации.
-
masked (bool, необязательно) – если
True, градиенты неопределённых элементов разреженных тензоров игнорируются. По умолчаниюFalse.
- Возвращает
-
Trueесли все различия удовлетворяют условию allclose - Тип возвращаемого значения
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.autograd.gradcheck.html