web-dev-qa-db-fra.com

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é.

55
RDK

Principalement tiré de official documentation:

La seule différence avec une session normale est qu’InteractiveSession s’installe comme session par défaut lors de la construction. Les méthodes Tensor.eval () et Operation.run () utiliseront cette session pour exécuter des opérations.

Cela permet d'utiliser un contexte interactif, comme Shell, car cela évite d'avoir à passer un objet Session explicite pour exécuter 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 supporte moins de typage, car cela permet d’exécuter des variables sans avoir à se référer constamment à l’objet session.

59
Set

La seule différence entre Session et une InteractiveSession est que InteractiveSession se fait la session default afin que vous puissiez appeler run() ou eval() sans appeler explicitement la session. 

Cela peut être utile si vous expérimentez TF dans python Shell ou dans les cahiers de notes Jupyter, car cela évite de devoir passer un objet Session explicite pour exécuter des opérations.

21
Salvador Dali

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

0
Francesco Cascio