tf.contrib.eager.gradients_function
Возвращает функцию, которая дифференцирует f по параметрам.
tf.contrib.eager.gradients_function(
f, params=None
)
Пример:
# f(x, y) = (x ^ 3) * y - x * (y ^ 2) # Therefore, the 1st order derivatives are: # df / dx = 3 * (x ^ 2) * y - y ^ 2 # df / dy = x ^ 3 - 2 * x * y # The 2nd order derivatives with respect to x is: # d^2 f / (dx)^2 = 6 * x * y def f(x, y): return x * x * x * y - x * y * y # Obtain a function that returns 1st order gradients. grad_fn = tfe.gradients_function(f) x = 2.0 y = 3.0 # Invoke the 1st order gradient function. x_grad, y_grad = grad_fn(x, y) assert x_grad.numpy() == 3 * (2 ** 2) * 3 - 3 ** 2 assert y_grad.numpy() == (2 ** 3) - 2 * 2 * 3 # Obtain a function that returns the 2nd order gradient with respect to x. gradgrad_fn = tfe.gradients_function(lambda x, y: grad_fn(x, y)[0]) # Invoke the 2nd order gradient function. x_gradgrad = gradgrad_fn(x, y)[0] assert x_gradgrad.numpy() == 6 * 2 * 3 # To obtain a callable that returns the gradient(s) of `f` with respect to a # subset of its inputs, use the `params` keyword argument with # `gradients_function()`. ygrad_fn = tfe.gradients_function(f, params=[1]) (y_grad,) = ygrad_fn(x, y) assert y_grad.numpy() == (2 ** 3) - 2 * 2 * 3
Обратите внимание, что дифференцируемыми являются только тензоры с вещественными или комплексными типами данных.
| Аргументы | |
|---|---|
f | функция, подлежащая дифференцированию. Если f возвращает скаляр, этот скаляр будет дифференцирован. Если f возвращает тензор или список тензоров, по умолчанию вычисляется скаляр, суммируя все их значения для получения одного скаляра. При необходимости тензоры можно поэлементно умножить на тензоры, переданные в качестве ключевого аргумента dy возвращаемой функции градиента. |
params | список имен параметров f или список целых чисел, индексирующих параметры, по которым мы будем дифференцировать. Передача None дифференцирует по всем параметрам. |
| Возвращаемое значение | |
|---|---|
функция, которая при вызове возвращает значение f и градиент f по всем params. Функция принимает дополнительный необязательный ключевой аргумент dy. Его установка позволяет вычислять векторные произведения Якоби для векторов, отличных от вектора единиц. |
| Исключения | |
|---|---|
ValueError | если параметры не все строки или не все целые числа. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/eager/gradients_function