Spec-Zone.ru › TensorFlow 2.4

tf.compat.v1.wrap_function

Оборачивает функцию TF 1.x fn в функцию графа.

tf.compat.v1.wrap_function(
    fn, signature, name=None
)

Функция Python fn будет вызвана один раз со символическими аргументами, указанными в signature, прослежена и превращена в функцию графа. Любые переменные, созданные функцией fn, будут принадлежать объекту, возвращаемому wrap_function. Результирующую функцию графа можно вызвать с тензорами, которые соответствуют сигнатуре.

def f(x, do_add):
  v = tf.Variable(5.0)
  if do_add:
    op = v.assign_add(x)
  else:
    op = v.assign_sub(x)
  with tf.control_dependencies([op]):
    return v.read_value()

f_add = tf.compat.v1.wrap_function(f, [tf.TensorSpec((), tf.float32), True])

assert float(f_add(1.0)) == 6.0
assert float(f_add(1.0)) == 7.0

# Can call tf.compat.v1.wrap_function again to get a new trace, a new set
# of variables, and possibly different non-template arguments.
f_sub= tf.compat.v1.wrap_function(f, [tf.TensorSpec((), tf.float32), False])

assert float(f_sub(1.0)) == 4.0
assert float(f_sub(1.0)) == 3.0

Оба tf.compat.v1.wrap_function и tf.function создают вызываемый граф TensorFlow. Но в то время как tf.function выполняет все операции с состоянием (например, tf.print) и последовательность операций для предоставления той же семантики, что и выполнение в режиме eager, wrap_function ближе к поведению session.run в TensorFlow 1.x. Она не будет выполнять какие-либо операции, если они не необходимы для вычисления выходов функции, либо через зависимость данных, либо через зависимость управления. Также она не будет упорядочивать операции.

В отличие от tf.function, wrap_function будет прослеживать функцию Python только один раз. Как и с плацехолдерами в TF 1.x, формы и типы данных должны быть предоставлены аргументу wrap_function в signature.

Поскольку отслеживание выполняется только один раз, переменные и состояние могут быть созданы внутри функции и принадлежать объекту-оболочке функции.

Аргументы
fn функция Python, которая должна быть обернута
signature плацехолдер и аргументы Python, которые должны быть переданы обернутой функции
name Необязательно. Имя функции.
Возвращаемое значение
обернутая функция графа.

© 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.3/api_docs/python/tf/compat/v1/wrap_function

Spec-Zone.ru

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