Spec-Zone.ru › TensorFlow 1.15

tf.switch_case

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

Создайте операцию switch/case, т.е. условную операцию с целочисленным индексом.

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

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.switch_case, `tf.compat.v2.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, вызываемый объект), либо просто список вызываемых объектов (в этом случае индекс неявно является ключом). 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 int, определяющий, какой из branch_fns должен быть выполнен.
branch_fns Список (int, вызываемый объект) пар или просто список вызываемых объектов (в этом случае индекс служит ключом). Каждый вызываемый объект должен возвращать соответствующую структуру тензоров.
default Необязательный вызываемый объект, возвращающий структуру тензоров.
name Имя этой операции (необязательно).
Возвращаемое значение
Тензоры, возвращённые вызываемым объектом, идентифицированным по branch_index, или те, что возвращены default, если нет совпадения ключа и был предоставлен default, или те, что возвращены вызываемым объектом с максимальным ключом branch_fn, если default не предоставлен.
Исключения
TypeError Если branch_fns не является списком/словарём.
TypeError Если branch_fns — это список, но он не содержит пар из 2-х элементов или вызываемых объектов.
TypeError Если fns[i] не является вызываемым объектом для любого i, или default не является вызываемым объектом.

Совместимость с V2

branch_fns в версии 1 мог быть словарем. Однако в версии 2 tf.Tensor и tf.Variable больше нельзя использовать в качестве ключей словаря, поэтому их нельзя использовать в качестве ключей для словаря. Используйте вместо них список или кортеж.

© 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/r1.15/api_docs/python/tf/switch_case

Spec-Zone.ru

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