Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.switch_case

TensorFlow 1 versión Ver código fuente en GitHub

Crear una operación de interruptor / caso, es decir, un condicional número entero indexada.

Ver también tf.case .

Esta operación puede ser sustancialmente más eficiente que tf.case cuando se seleccionará exactamente una rama. tf.switch_case es más como una declaración C ++ interruptor / caja de tf.case , que es más como un / cadena si / elif elif / else.

El branch_fns parámetro es o bien un dict de int a callables, o una lista de ( int , se puede llamar) pares, o simplemente una lista de callables (en cuyo caso el índice es implícitamente la tecla). El branch_index Tensor se utiliza para seleccionar un elemento en branch_fns con coincidencia int clave, volver a caer default si ninguna coincidencia, o max(keys) si no hay default se proporciona. Las claves deben formar un conjunto contiguo de 0 a len(branch_fns) - 1 .

tf.switch_case soportes agrupados estructuras como se aplica en tf.nest . Todos callables debe devolver la misma (posiblemente anidada) estructura de valores de las listas, tuplas, y / o tuplas con nombre.

Ejemplo:

pseudocódigo:

 switch (branch_index) {  // c-style switch
  case 0: return 17;
  case 1: return 31;
  default: return -1;
}
 

o

 branches = {0: lambda: 17, 1: lambda: 31}
branches.get(branch_index, lambda: -1)()
 

expresiones:

 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 Un int Tensor especificándose cuáles de branch_fns debe ser ejecutado.
branch_fns A dict mapeo int S para callables, o una list de ( int , se puede llamar) pares, o simplemente una lista de callables (en cuyo caso el índice sirve como la tecla). Cada exigible debe devolver una estructura de adaptación de los tensores.
default exigible opcional que devuelve una estructura de tensores.
name Un nombre para esta operación (opcional).

Los tensores devueltos por el exigible identificados por branch_index , o los devueltos por default si no hay partidos clave y default se proporcionó, o aquellos devueltos por el máximo de la carrocería branch_fn si no hay default se proporciona.

TypeError Si branch_fns no es una lista / diccionario.
TypeError Si branch_fns es una lista pero no contiene 2-tuplas o callables.
TypeError Si fns[i] no es exigible para cualquier i, o default no es exigible.