Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.switch_case

TensorFlow 1 versão Ver fonte no GitHub

Criar uma operação de interruptor / caso, isto é, um número inteiro condicional-indexado.

Veja também tf.case .

Esta op pode ser substancialmente mais eficiente do que tf.case quando exatamente um ramo será selecionado. tf.switch_case é mais como um C ++ interruptor / instrução case que tf.case , que é mais como um caso elif / elif cadeia / / else.

O branch_fns parâmetro é tanto um dicionário de int para chamáveis, ou lista de ( int , que pode ser chamado) pares, ou simplesmente uma lista de funções chamáveis (caso em que o índice é implicitamente a chave). O branch_index Tensor é usado para selecionar um elemento em branch_fns com correspondência int chave, volta caindo para default se nenhum jogo, ou max(keys) se nenhum default é fornecido. As teclas devem formar um conjunto contíguo de 0 a len(branch_fns) - 1 .

tf.switch_case suportes aninhados estruturas como implementado no tf.nest . Todas as funções chamáveis ​​deve retornar o mesmo (possivelmente aninhados) estrutura de valores de listas, tuplas e / ou tuplas nomeadas.

Exemplo:

Pseudo-código:

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

ou

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

Expressões:

 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 Um int Tensor especificando quais de branch_fns deve ser executado.
branch_fns Um dict mapeamento int s para chamáveis, ou uma list de ( int , que podem ser chamadas) pares, ou simplesmente uma lista de funções chamáveis (caso em que o índice serve como chave). Cada exigível deve retornar uma estrutura correspondente de tensores.
default exigível opcional que retorna uma estrutura de tensores.
name Um nome para esta operação (opcional).

Os tensores retornados pelo exigível identificado por branch_index , ou aqueles retornado por default se nenhuma combinação chave e default foi fornecido, ou aqueles retornado pela max-chaveado branch_fn se nenhum default é fornecido.

TypeError Se branch_fns não é uma lista / dicionário.
TypeError Se branch_fns é uma lista, mas não contém 2-tuplas ou chamáveis.
TypeError Se fns[i] não é exigível para qualquer i, ou default não é exigível.