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

tf.cond

TensorFlow 1 versão Ver fonte no GitHub

Retorno true_fn() se o predicado pred é verdade outra false_fn() .

Usado nos cadernos

Usado nos tutoriais

true_fn e false_fn ambas as listas de retorno de tensores de saída. true_fn e false_fn devem ter o mesmo número diferente de zero e tipo de saídas.

Embora este comportamento é consistente com o modelo de fluxo de dados de TensorFlow, tem frequentemente surpreendeu os usuários que esperava um mais preguiçosos semântica. Considere o seguinte programa simples:

 z = tf.multiply(a, b)
result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))
 

Se x < y , o tf.add operação será executada e tf.square operação não será executada. Desde z é necessário para pelo menos um ramo do cond , o tf.multiply operação é sempre executada, incondicionalmente.

Note-se que cond chamadas true_fn e false_fn exatamente uma vez (dentro da chamada para cond , e não durante todo Session.run() ). cond pontos juntos os fragmentos de gráficos criados durante os true_fn e false_fn chamadas com alguns nós de gráficos adicionais para garantir que o ramo direito é executado, dependendo do valor de pred .

tf.cond suportes aninhados estruturas como implementado no tensorflow.python.util.nest . Ambos true_fn e false_fn deve retornar o mesmo (possivelmente aninhados) estrutura de valores de listas, tuplas e / ou tuplas nomeadas. Listas Singleton e tuplas formar as únicas excepções a esta: quando retornado por true_fn e / ou false_fn , eles estão implicitamente descompactado para valores individuais.

pred Um escalar determinar se a devolver o resultado de true_fn ou false_fn .
true_fn O que pode ser chamado para ser executada se pred é verdade.
false_fn O que pode ser chamado para ser executada se pred é falsa.
name prefixo nome opcional para os tensores devolvidos.

Tensores retornado pela chamada a qualquer true_fn ou false_fn . Se as funções chamáveis ​​retornar uma lista Singleton, o elemento é extraído a partir da lista.

TypeError se true_fn ou false_fn não é exigível.
ValueError se true_fn e false_fn não devolver o mesmo número de tensores, ou tensores de retorno de tipos diferentes.

Exemplo:

 x = tf.constant(2)
y = tf.constant(5)
def f1(): return tf.multiply(x, 17)
def f2(): return tf.add(y, 23)
r = tf.cond(tf.less(x, y), f1, f2)
# r is set to f1().
# Operations in f2 (e.g., tf.add) are not executed.