Quelle est la différence entre les tf.cond et if-else?

Quelle est la différence entre les tf.cond et if-else?

Scénario 1

import tensorflow as tf

x = 'x'
y = tf.cond(tf.equal(x, 'x'), lambda: 1, lambda: 0)
with tf.Session() as sess:
    print(sess.run(y))
x = 'y'
with tf.Session() as sess:
    print(sess.run(y))

Scénario 2

import tensorflow as tf

x = tf.Variable('x')
y = tf.cond(tf.equal(x, 'x'), lambda: 1, lambda: 0)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    init.run()
    print(sess.run(y))

tf.assign(x, 'y')
with tf.Session() as sess:
    init.run()
    print(sess.run(y))

Les sorties sont à la fois 1.

Signifie-t-il seulement tf.espace réservé peut travailler, et non pas tout le tenseur, comme la tf.variable? Quand dois-je choisir si-de la condition else et quand utiliser tf.cond? Quelles sont les diffences entre eux?

Votre erreur dans le code est le suivant: tf,assign(x, 'y') il suffit de créer l'opération d'affectation, mais encore vous avez besoin pour exécuter cette opération, de sorte que vous attribue un " y " à x. Donc, vous essayez quelque chose comme ça: ass_op = tf.assign(x, 'y') Puis sous tf.Session(), vous devez ajouter: sess.run(ass_op) Que c'est quand vous allez imprimer 0.

OriginalL'auteur gaussclb | 2017-08-05