tensorflow: vérifier si un scalaire booléen tenseur est Vrai

Je veux contrôler l'exécution d'une fonction à l'aide d'un espace réservé, mais reçois un message d'erreur "à l'Aide d'un tf.Tenseur comme un Python bool n'est pas autorisé". Voici le code qui génère cette erreur:

import tensorflow as tf
def foo(c):
  if c:
    print('This is true')
    #heavy code here
    return 10
  else:
    print('This is false')
    #different code here
    return 0

a = tf.placeholder(tf.bool)  #placeholder for a single boolean value
b = foo(a)
sess = tf.InteractiveSession()
res = sess.run(b, feed_dict = {a: True})
sess.close()

J'ai changé if c à if c is not None sans chance. Comment puis-je contrôler foo en tournant sur et hors de l'espace réservé a alors?

Mise à jour: comme @nessuno et @nemo point, nous devons utiliser tf.cond au lieu de if..else. La réponse à ma question est de re-conception de ma fonction comme ceci:

import tensorflow as tf
def foo(c):
  return tf.cond(c, func1, func2)

a = tf.placeholder(tf.bool)  #placeholder for a single boolean value
b = foo(a)
sess = tf.InteractiveSession()
res = sess.run(b, feed_dict = {a: True})
sess.close() 
InformationsquelleAutor Tu Bui | 2017-04-06