Spec-Zone.ru › TensorFlow

tf.case

Создайте операцию case.

tf.case(
    pred_fn_pairs,
    default=None,
    exclusive=False,
    strict=False,
    name='case'
)

Используется в ноутбуках

Используется в учебниках
  • Учебник по многоруким бандитам в TF-Agents

См. также 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.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, поэтому их нельзя использовать в качестве ключей словаря. Используйте список или кортеж вместо этого.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/case

Spec-Zone.ru

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