Spec-Zone.ru › TensorFlow 2.4

tf.compat.v1.cond

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

tf.compat.v1.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 Логическое значение, включающее/отключающее "жесткий" режим; см. выше.
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/r2.4/api_docs/python/tf/compat/v1/cond

Spec-Zone.ru

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