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
)
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