tf.grad_pass_through
| Просмотреть исходный код на GitHub |
Создаёт операцию grad-pass-through с поведением вперёд, заданным в f.
tf.grad_pass_through(
f
)
Используйте эту функцию для обёртывания любого оператора, сохраняя его поведение на прямом проходе, но заменяя исходный оператор в обратном графе на тождество. Например:
x = tf.Variable(1.0, name="x") z = tf.Variable(3.0, name="z") with tf.GradientTape() as tape: # y will evaluate to 9.0 y = tf.grad_pass_through(x.assign)(z**2) # grads will evaluate to 6.0 grads = tape.gradient(y, z)
Ещё один пример — «дифференцируемое» приближение скользящего среднего, где градиенты могут передаваться в последнее значение, подаваемое в скользящее среднее, но скользящее среднее всё ещё используется для прямого прохода:
x = ... # Some scalar value # A moving average object, we don't need to know how this is implemented moving_average = MovingAverage() with backprop.GradientTape() as tape: # mavg_x will evaluate to the current running average value mavg_x = tf.grad_pass_through(moving_average)(x) grads = tape.gradient(mavg_x, x) # grads will evaluate to 1.0
| Аргументы | |
|---|---|
f | функция f(*x), которая возвращает Tensor или вложенную структуру Tensor выходных данных. |
| Возвращаемое значение | |
|---|---|
Функция h(x), которая возвращает те же значения, что и f(x), и чьи градиенты такие же, как у функции тождества. |
© 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/r2.4/api_docs/python/tf/grad_pass_through