Spec-Zone.ru › TensorFlow 1.15

tf.cond

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

Возвращает true_fn() , если предикат pred истинен, иначе false_fn(). (устаревшие аргументы)

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

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

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

tf.compat.v1.cond

tf.cond(
    pred, true_fn=None, false_fn=None, strict=False, name=None, fn1=None, fn2=None
)
Предупреждение: НЕКОТОРЫЕ АРГУМЕНТЫ УСТАРЕЛИ: (fn1, fn2). Они будут удалены в будущей версии. Инструкции по обновлению: fn1/fn2 устарели в пользу аргументов true_fn/false_fn.

true_fn и false_fn оба возвращают списки тензоров вывода. true_fn и false_fn должны иметь одинаковое ненулевое количество и тип выходов.

Предупреждение: Любые тензоры или операции, созданные вне true_fn и false_fn, будут выполняться независимо от того, какой ветвь выбрана во время выполнения.

Хотя это поведение соответствует модели потока данных TensorFlow, оно часто удивляло пользователей, ожидавших более леничной семантики. Рассмотрим следующую простую программу:

z = tf.multiply(a, b)
result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))

Если x < y, операция tf.add будет выполнена, а операция tf.square не будет выполнена. Поскольку z необходима хотя бы для одной ветви cond, операция tf.multiply всегда выполняется безусловно.

Обратите внимание, что cond вызывает true_fn и false_fn точно один раз (внутри вызова cond, и совсем не во время Session.run()). cond склеивает фрагменты графа, созданные во время вызовов true_fn и false_fn, с некоторыми дополнительными узлами графа, чтобы гарантировать, что выполняется правильная ветвь в зависимости от значения pred.

tf.cond поддерживает вложенные структуры, как реализовано в tensorflow.python.util.nest. И true_fn и false_fn должны возвращать одинаковую (возможно, вложенную) структуру значений списков, кортежей и/или именованных кортежей. Одиночные списки и кортежи являются единственными исключениями из этого правила: при возвращении true_fn и/или false_fn, они неявно распаковываются до одиночных значений. Это поведение отключено путём передачи strict=True.

Аргументы
pred Скаляр, определяющий, нужно ли вернуть результат true_fn или false_fn .
true_fn Вызываемая функция, которая должна быть выполнена, если pred истинен.
false_fn Вызываемая функция, которая должна быть выполнена, если pred ложен.
strict Булево значение, которое включает/отключает режим 'strict'; см. выше.
name Необязательный префикс имени для возвращаемых тензоров.
Возвращает
Тензоры, возвращенные вызовом либо true_fn, либо false_fn. Если вызываемые функции возвращают одиночный список, элемент извлекается из списка.
Исключения
TypeError если true_fn или false_fn не является вызываемой функцией.
ValueError если true_fn и false_fn не возвращают одинаковое количество тензоров или возвращают тензоры разных типов.

Пример:

x = tf.constant(2)
y = tf.constant(5)
def f1(): return tf.multiply(x, 17)
def f2(): return tf.add(y, 23)
r = tf.cond(tf.less(x, y), f1, f2)
# r is set to f1().
# Operations in f2 (e.g., tf.add) are not executed.

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

Spec-Zone.ru

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