Spec-Zone.ru › TensorFlow 2.3

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 Tensor целого типа, указывающий, какая из 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] не является вызываемой функцией для любого i, или default не является вызываемой функцией.

© 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/r2.3/api_docs/python/tf/switch_case

Spec-Zone.ru

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