Spec-Zone.ru › TensorFlow 2.4

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] не является вызываемой функцией для любого 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.4/api_docs/python/tf/switch_case

Spec-Zone.ru

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