Spec-Zone.ru › TensorFlow 2.3

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

Совместимость с версией 2

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.3/api_docs/python/tf/case

Spec-Zone.ru

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