Spec-Zone.ru › TensorFlow

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 Логическое значение, которое включает/отключает режим '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.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/cond

Spec-Zone.ru

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