check_grad#
- scipy.optimize.check_grad(функция, grad, x0, *args, эпсилон=np.float64(1.4901161193847656e-08), направление='all', rng=None, seed=None)[источник]#
Проверить корректность функции градиента, сравнив её с (прямой) конечно-разностной аппроксимацией градиента.
- Параметры:
- функцияcallable
func(x0, *args) Функция, производная которой должна быть проверена.
- gradcallable
grad(x0, *args) Якобиан функция.
- x0ndarray
Точки для проверки grad по сравнению с аппроксимацией градиента методом прямой разности с использованием функция.
- args\*args, optional
Дополнительные аргументы, передаваемые в функция и grad.
- эпсилонfloat, опционально
Шаг, используемый для аппроксимации конечными разностями. По умолчанию
sqrt(np.finfo(float).eps), что приблизительно равно 1.49e-08.- направлениеstr, optional
Если установлено в
'random', затем градиенты вдоль случайного вектора используются для проверки grad против аппроксимации прямой разностью используя функция. По умолчанию это'all', в этом случае все векторы направления one hot рассматриваются для проверки grad. Если функция является векторнозначной функцией, то только'all'может быть использован.- rng{None, int,
numpy.random.Generator, опционально Если rng передается по ключевому слову, типы, отличные от
numpy.random.Generatorпередаются вnumpy.random.default_rngдля создания экземпляраGenerator. Если rng уже являетсяGeneratorэкземпляр, то предоставленный экземпляр используется. Укажите rng для повторяемого поведения функции.Если этот аргумент передаётся по позиции или seed передается по ключевому слову, устаревшее поведение для аргумента seed применяется:
Если seed равно None (или
numpy.random),numpy.random.RandomStateиспользуется синглтон.Если seed является int, новый
RandomStateиспользуется экземпляр, инициализированный с seed.Если seed уже является
GeneratorилиRandomStateэкземпляр, тогда этот экземпляр используется.
Изменено в версии 1.15.0: В рамках SPEC-007 переход от использования
numpy.random.RandomStatetonumpy.random.Generator, этот ключевое слово было изменено с seed to rng. В переходный период оба ключевых слова будут продолжать работать, хотя только одно может быть указано за раз. После переходного периода вызовы функций, использующие seed ключевое слово будет выдавать предупреждения. Поведение обоих seed и rng описаны выше, но только rng ключевое слово должно использоваться в новом коде.Сгенерированные случайные числа влияют на случайный вектор, вдоль которого вычисляются градиенты для проверки
grad. Обратите внимание, что rng используется только когда направление аргумент установлен в ‘random’.
- функцияcallable
- Возвращает:
- errfloat
Квадратный корень из суммы квадратов (т.е., 2-норма) разности между
grad(x0, *args)и конечная разностная аппроксимация grad используя func в точках x0.
Смотрите также
Примеры
>>> import numpy as np >>> def func(x): ... return x[0]**2 - 0.5 * x[1]**3 >>> def grad(x): ... return [2 * x[0], -1.5 * x[1]**2] >>> from scipy.optimize import check_grad >>> check_grad(func, grad, [1.5, -1.5]) 2.9802322387695312e-08 # may vary >>> rng = np.random.default_rng() >>> check_grad(func, grad, [1.5, -1.5], ... direction='random', seed=rng) 2.9802322387695312e-08