Spec-Zone.ru › TensorFlow 2.3

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.contrib.framework.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 если ни одна из них не оценивается как True.
Исключения
TypeError Если pred_fn_pairs не является списком/словарям.
TypeError Если pred_fn_pairs является списком, но не содержит 2-кортежей.
TypeError Если fns[i] не является вызываемым объектом для любого i, или default не является вызываемым объектом.

Совместимость с Eager

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

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/compat/v1/case

Spec-Zone.ru

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