Spec-Zone.ru › TensorFlow

tf.case

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

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

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

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

См. также tf.switch_case.

Параметр pred_fn_pairs — это список из N пар. Каждая пара содержит скалярный тензор типа boolean и вызываемый объект Python, который создает тензоры, возвращаемые, если значение boolean равно 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 Список пар, состоящих из скалярного тензора типа boolean и вызываемого объекта, который возвращает список тензоров.
default Необязательный вызываемый объект, возвращающий список тензоров.
exclusive True, если допускается, чтобы не более одного предиката принимало значение True.
strict Логическое значение, включающее или отключающее «строгий» режим; см. выше.
name Имя этой операции (необязательно).
Возвращает
Тензоры, возвращенные первой парой, предикат которой принял значение True, или тензоры, возвращенные default, если ни один предикат не принял это значение.
Вызывает исключения
TypeError Если pred_fn_pairs не является списком или кортежем.
TypeError Если pred_fn_pairs является списком, но не содержит кортежей из 2 элементов.
TypeError Если fns[i] не является вызываемым объектом для какого-либо i или default не является вызываемым объектом.

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

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

© 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