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 Логическое значение, включающее или отключающее «строгий» режим; см. выше.
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