Spec-Zone.ru › TensorFlow

tf.compat.v1.case

Создать операцию case.

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

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

Параметр pred_fn_pairs — это словарь или список пар размером N. Каждая пара содержит булеву скалярную тензор и python-вызов, который создаёт тензоры, которые будут возвращены, если булево значение равно 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 Словарь или список пар булевой скалярной тензора и вызова, возвращающего список тензоров.
default Необязательный вызов, возвращающий список тензоров.
exclusive True, если допускается, чтобы максимум один предикат вычислял True.
strict Булево значение, которое включает/отключает режим «строго»; см. выше.
name Имя этой операции (необязательно).
Возвращает
Тензоры, возвращённые первой парой, предикат которой вычислил значение True, или те, которые возвращает default, если ни одна не выполнила это условие.
Исключения
TypeError Если pred_fn_pairs не является списком/словарем.
TypeError Если pred_fn_pairs является списком, но не содержит 2-кортежей.
TypeError Если fns[i] не является вызываемым для любого i, или default не является вызываемым.

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

Неупорядоченные словари не поддерживаются в режиме 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