Spec-Zone.ru › TensorFlow 1.15

tf.gradients

Просмотреть исходный код на GitHub

Строит символические производные суммы ys по x в xs.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.gradients

tf.gradients(
    ys, xs, grad_ys=None, name='gradients', colocate_gradients_with_ops=False,
    gate_gradients=False, aggregation_method=None, stop_gradients=None,
    unconnected_gradients=tf.UnconnectedGradients.NONE
)

ys и xs являются каждым тензором Tensor или списком тензоров. grad_ys является списком Tensor, содержащим градиенты, полученные ys. Список должен иметь такую же длину, как и ys.

gradients() добавляет в граф операции, чтобы вывести производные ys по xs. Он возвращает список Tensor длиной len(xs), где каждый тензор является производной sum(dy/dx) для y в ys.

grad_ys - это список тензоров той же длины, что и ys , содержащий начальные градиенты для каждого y в ys. Когда grad_ys равно None, мы заполняем тензор '1' с формой y для каждого y в ys. Пользователь может предоставить собственные начальные grad_ys для вычисления производных с использованием другого начального градиента для каждого y (например, если кто-то хотел взвесить градиент по-разному для каждого значения в каждом y).

stop_gradients является тензором Tensor или списком тензоров, которые должны рассматриваться как постоянные по отношению ко всем xs. Эти тензоры не будут обработаны при обратном распространении, как будто они были явно отключены с помощью stop_gradient. Среди прочего, это позволяет вычислять частные производные, а не полные производные. Например:

a = tf.constant(0.)
b = 2 * a
g = tf.gradients(a + b, [a, b], stop_gradients=[a, b])

Здесь частные производные g оцениваются как [1.0, 1.0], в отличие от полных производных tf.gradients(a + b, [a, b]), которые учитывают влияние a на b и оцениваются как [3.0, 1.0]. Обратите внимание, что вышеуказанное эквивалентно:

a = tf.stop_gradient(tf.constant(0.))
b = tf.stop_gradient(2 * a)
g = tf.gradients(a + b, [a, b])

stop_gradients предоставляет способ остановки градиента после того, как граф уже был построен, по сравнению с tf.stop_gradient, который используется во время построения графа. Когда оба подхода объединены, обратное распространение останавливается как на узлах tf.stop_gradient, так и на узлах в stop_gradients, в зависимости от того, какой из них встречается первым.

Все целочисленные тензоры рассматриваются как постоянные по отношению ко всем xs, как если бы они были включены в stop_gradients.

unconnected_gradients определяет значение, возвращаемое для каждого x в xs, если он не подключён в графе к ys. По умолчанию это None для защиты от ошибок. Математически эти градиенты равны нулю, что можно запросить с помощью параметра 'zero'. tf.UnconnectedGradients предоставляет следующие варианты и поведение:

a = tf.ones([1, 2])
b = tf.ones([3, 1])
g1 = tf.gradients([b], [a], unnconnected_gradients='none')
sess.run(g1)  # [None]

g2 = tf.gradients([b], [a], unconnected_gradients='zero')
sess.run(g2)  # [array([[0., 0.]], dtype=float32)]
Аргументы
ys Тензор Tensor или список тензоров, подлежащих дифференцированию.
xs Тензор Tensor или список тензоров, используемых для дифференцирования.
grad_ys Необязательно. Тензор Tensor или список тензоров такого же размера, что и ys и содержащий градиенты, вычисленные для каждого y в ys.
name Необязательное имя для группировки всех операций градиента. По умолчанию 'gradients'.
colocate_gradients_with_ops Если True, пытайтесь разместить градиенты вместе с соответствующей операцией.
gate_gradients Если True, добавляет кортеж вокруг возвращаемых градиентов для операции. Это предотвращает некоторые проблемы с гонками.
aggregation_method Указывает метод объединения членов градиента. Допустимые значения - константы, определенные в классе AggregationMethod.
stop_gradients Необязательно. Тензор Tensor или список тензоров, по которым не следует дифференцировать.
unconnected_gradients Необязательно. Указывает значение градиента, возвращаемое, когда заданные входные тензоры не подключены. Допустимые значения - константы, определенные в классе tf.UnconnectedGradients, а значение по умолчанию - none.
Возвращаемое значение
Список sum(dy/dx) для каждого x в xs.
Исключения
LookupError если одна из операций между x и y не имеет зарегистрированной функции градиента.
ValueError если аргументы недопустимы.
RuntimeError если вызов осуществляется в режиме Eager.

© 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/gradients

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API