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, если ни один не совпадает, или 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 dict, отображающий int на вызовы, или list пар (int, вызов), или просто список вызовов (в этом случае индекс используется в качестве ключа). Каждый вызов должен возвращать соответствующую структуру тензоров.
default Необязательный вызов, возвращающий структуру тензоров.
name Имя этой операции (необязательно).
Возвращает
Тензоры, возвращаемые вызовом, идентифицированным по branch_index, или те, которые возвращаются default, если ни один ключ не совпадает, и был предоставлен default, или те, которые возвращает вызов с максимальным ключом branch_fn, если default не предоставлен.
Исключения
TypeError Если branch_fns не является списком/словарем.
TypeError Если branch_fns является списком, но не содержит пар 2-кортежей или вызовов.
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