Spec-Zone.ru › TensorFlow

tf.switch_case

Создает операцию switch/case, то есть

Просмотреть псевдонимы

Совместимые псевдонимы для миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.switch_case

tf.switch_case(
    branch_index, branch_fns, default=None, name='switch_case'
)

условную операцию с целочисленным индексом.

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

Эта операция может быть значительно эффективнее, чем tf.case, если будет выбрана ровно одна ветвь. tf.switch_case больше похожа на оператор switch/case в C++, чем tf.case, которая больше похожа на цепочку if/elif/elif/else.

Параметр branch_fns — это словарь, сопоставляющий int вызываемым объектам, или список пар (int, вызываемый объект), или просто список вызываемых объектов (в этом случае индекс неявно используется в качестве ключа). branch_index Tensor используется для выбора элемента в branch_fns с соответствующим ключом int; если совпадений нет, используется default, а если default не задан, — max(keys). Ключи должны образовывать непрерывный набор от 0 до len(branch_fns) - 1.

tf.switch_case поддерживает вложенные структуры, реализованные в tf.nest. Все вызываемые объекты должны возвращать одинаковую (возможно, вложенную) структуру значений из списков, кортежей и/или именованных кортежей.

Пример:

Псевдокод:

switch (branch_index) {  // c-style switch
  case 0: return 17;
  case 1: return 31;
  default: return -1;
}

или

branches = {0: lambda: 17, 1: lambda: 31}
branches.get(branch_index, lambda: -1)()

Выражения:

def f1(): return tf.constant(17)
def f2(): return tf.constant(31)
def f3(): return tf.constant(-1)
r = tf.switch_case(branch_index, branch_fns={0: f1, 1: f2}, default=f3)
# Equivalent: tf.switch_case(branch_index, branch_fns={0: f1, 1: f2, 2: f3})
Аргументы
branch_index Целочисленный тензор, указывающий, какой из branch_fns следует выполнить.
branch_fns Сопоставление int с вызываемыми объектами в виде dict или list пар (int, вызываемый объект), либо просто список вызываемых объектов (в этом случае индекс служит ключом). Каждый вызываемый объект должен возвращать соответствующую структуру тензоров.
default Необязательный вызываемый объект, возвращающий структуру тензоров.
name Имя этой операции (необязательно).
Возвращает
Тензоры, возвращенные вызываемым объектом, определенным с помощью branch_index, либо тензоры, возвращенные default, если ключ не найден и задан default, либо тензоры, возвращенные вызываемым объектом с максимальным ключом branch_fn, если default не задан.
Вызывает исключения
TypeError Если branch_fns не является списком или словарем.
TypeError Если branch_fns является списком, но не содержит кортежи из двух элементов или вызываемые объекты.
TypeError Если fns[i] не является вызываемым объектом для какого-либо i или default не является вызываемым объектом.

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

Spec-Zone.ru

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