Spec-Zone.ru › TensorFlow 2.4

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, если таковой нет.
Исключения
TypeError Если pred_fn_pairs не является списком/словарём.
TypeError Если pred_fn_pairs является списком, но не содержит пар из двух кортежей.
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.4/api_docs/python/tf/compat/v1/case

Spec-Zone.ru

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