73 votes

Quelle est la différence entre tf.Session () et tf.InteractiveSession ()?

Dans quels cas faut-il considérer tf.Session() et tf.InteractiveSession() dans quel but?

Lorsque j'ai essayé d'utiliser l'ancienne, certaines fonctions (par exemple, .eval() ) ne fonctionnaient pas, et lorsque j'ai changé pour la dernière, cela a fonctionné.

78voto

Set Points 21500

Principalement prises à partir officielles de la documentation:

La seule différence avec une Session ordinaire est qu'un InteractiveSession s'installe comme la valeur par défaut de la session de la construction. Les méthodes de Tenseur.eval() et de l'Opération.run() utilisera cette session pour exécuter les opérations.

Cela permet de les utiliser contexte interactif, comme shell, car il évite d'avoir à passer une Session explicite l'objet pour exécuter l'op:

sess = tf.InteractiveSession()
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * b
# We can just use 'c.eval()' without passing 'sess'
print(c.eval())
sess.close()

Il est également possible de dire, que InteractiveSession prend en charge moins de frappe, permet de faire fonctionner les variables sans avoir à constamment se référer à l'objet de session.

25voto

Salvador Dali Points 11667

La seule différence entre Session et InteractiveSession que InteractiveSession fait lui-même la session par défaut de sorte que vous pouvez appeler en run() ou eval() sans appeler explicitement la session.

Cela peut être utile si vous travaillez avec TF en python shell ou dans Jupyter ordinateurs portables, car il évite d'avoir à passer une Session explicite de l'objet pour exécuter des opérations.

1voto

En plus de s’installer comme session par défaut, conformément à la documentation officielle , il ressort de certains tests sur l’utilisation de la mémoire que la session interactive utilise l’option gpu_options.allow_growth = True - voir [using_gpu # permettre_gpu_memory_growth] - tant que tf.Session () by default alloue la totalité de la mémoire du GPU.

-6voto

Parvez Khan Points 517

Plutôt que les différences mentionnées ci-dessus - la différence la plus importante est avec session.run() nous pouvons extraire les valeurs de plusieurs tenseurs en une seule étape.

Par exemple:

 num1 = tf.constant(5)
num2 = tf.constant(10)
num3 = tf.multiply(num1,num2)
model = tf.global_variables_initializer()

session = tf.Session()
session.run(model)

print(session.run([num2, num1, num3]))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X