Spec-Zone.ru › TensorFlow

tf.compat.v1.case

Создаёт операцию ветвления.

tf.compat.v1.case(
    pred_fn_pairs,
    default=None,
    exclusive=False,
    strict=False,
    name='case'
)

См. также tf.switch_case.

Параметр pred_fn_pairs — это словарь или список из N пар. Каждая пара содержит скалярный тензор типа boolean и вызываемый объект Python, который создаёт тензоры, возвращаемые, если значение boolean равно True. default — вызываемый объект, создающий список тензоров. Все вызываемые объекты в pred_fn_pairs, а также default (если он указан), должны возвращать одинаковое количество тензоров одинаковых типов.

Если exclusive==True, вычисляются все предикаты, и возникает исключение, если более одного предиката принимает значение True. Если exclusive==False, выполнение останавливается на первом предикате, который принимает значение True, и тензоры, созданные соответствующей функцией, немедленно возвращаются. Если ни один предикат не принимает значение True, эта операция возвращает тензоры, созданные default.

tf.case поддерживает вложенные структуры, реализованные в tf.nest. Все вызываемые объекты должны возвращать одинаковую (возможно, вложенную) структуру значений из списков, кортежей и/или именованных кортежей. Исключение составляют только списки и кортежи из одного элемента: при возврате вызываемым объектом они неявно распаковываются в отдельные значения. Это поведение отключается с помощью strict=True.

Если для pred_fn_pairs используется неупорядоченный словарь, порядок условных проверок не гарантируется. Однако порядок является детерминированным, поэтому переменные, создаваемые в условных ветвях, создаются в фиксированном порядке при каждом запуске.

Пример 1:

Псевдокод:

if (x < y) return 17;
else return 23;

Выражения:

f1 = lambda: tf.constant(17)
f2 = lambda: tf.constant(23)
r = tf.case([(tf.less(x, y), f1)], default=f2)

Пример 2:

Псевдокод:

if (x < y && x > z) raise OpError("Only one predicate may evaluate to True");
if (x < y) return 17;
else if (x > z) return 23;
else return -1;

Выражения:

def f1(): return tf.constant(17)
def f2(): return tf.constant(23)
def f3(): return tf.constant(-1)
r = tf.case({tf.less(x, y): f1, tf.greater(x, z): f2},
         default=f3, exclusive=True)
Аргументы
pred_fn_pairs Словарь или список пар, состоящих из скалярного тензора типа boolean и вызываемого объекта, возвращающего список тензоров.
default Необязательный вызываемый объект, возвращающий список тензоров.
exclusive True, если не более одного предиката может принять значение True.
strict Логическое значение, включающее или отключающее режим «strict»; см. выше.
name Имя этой операции (необязательно).
Возвращает
Тензоры, возвращённые первой парой, предикат которой принял значение True, или тензоры, возвращённые default, если ни один предикат не принимает это значение.
Вызывает исключения
TypeError Если pred_fn_pairs не является списком или словарём.
TypeError Если pred_fn_pairs является списком, но не содержит кортежи из двух элементов.
TypeError Если fns[i] не является вызываемым объектом для какого-либо i или default не является вызываемым объектом.

совместимость с eager execution

Неупорядоченные словари не поддерживаются в режиме eager, если exclusive=False. Вместо этого используйте список кортежей.

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

Spec-Zone.ru

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