Spec-Zone.ru › TensorFlow 2.4

tf.case

Просмотреть исходный код на GitHub

Создаёт операцию выбора.

tf.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.

Пример 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 не является вызываемым объектом.

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

pred_fn_pairs в версии v1 мог быть словарем. Однако tf.Tensor и tf.Variable больше не являются хешируемыми в версии v2, поэтому не могут использоваться в качестве ключей словаря. Используйте список или кортеж вместо этого.

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

Spec-Zone.ru

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