tf.compat.v2.case
Создать операцию case.
tf.compat.v2.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 если ни один предикат не принял значение True. |
| Исключения | |
|---|---|
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/r1.15/api_docs/python/tf/compat/v2/case