Spec-Zone.ru › TensorFlow 2.9

tf.switch_case

Просмотреть исходный код на GitHub

Создаёт операцию 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, если совпадения не найдено, или max(keys), если default не указан. Ключи должны образовывать непрерывный набор от 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 с вызываемыми функциями, или список пар (int, вызываемая функция), или просто список вызываемых функций (в этом случае индекс используется в качестве ключа). Каждая вызываемая функция должна возвращать соответствующую структуру тензоров.
default Необязательная вызываемая функция, возвращающая структуру тензоров.
name Имя данной операции (необязательно).
Возвращаемые значения
Тензоры, возвращаемые вызываемой функцией, определённой по branch_index, или те, которые возвращает default, если ключ не соответствует и default был предоставлен, или те, которые возвращает вызываемая функция с максимальным ключом branch_fn, если default не предоставлен.
Исключения
TypeError Если branch_fns не является списком/словарем.
TypeError Если branch_fns является списком, но не содержит пар из 2-х элементов или вызываемых функций.
TypeError Если какая-либо из fns[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/versions/r2.9/api_docs/python/tf/switch_case

Spec-Zone.ru

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