Подтвердить что ты не робот

Какая разница между tf.Session() и tf.InteractiveSession()?

В каких случаях следует учитывать tf.Session() и tf.InteractiveSession() для каких целей?

Когда я попытался использовать первый, некоторые функции (например, .eval()) не работали, и когда я перешел на более поздний, он работал.

4b9b3361

Ответ 1

В основном взята из официальная документация:

Единственное отличие от обычного сеанса заключается в том, что InteractiveSession устанавливает себя как сеанс по умолчанию для построения. Методы Tensor.eval() и Operation.run() будут использовать этот сеанс для запуска ops.

Это позволяет использовать интерактивный контекст, например shell, поскольку он избегает необходимости передавать явный объект Session для запуска 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()

Также можно сказать, что InteractiveSession поддерживает меньшее количество ввода, так как позволяет запускать переменные без необходимости постоянно ссылаться на объект сеанса.

Ответ 2

Единственное различие между Session и InteractiveSession заключается в том, что InteractiveSession делает себя сеансом по умолчанию, чтобы вы могли вызывать run() или eval() без явного вызова сеанса.

Это может быть полезно, если вы экспериментируете с TF в оболочке python или в ноутбуках Jupyter, потому что это позволяет избежать передачи явного объекта Session для выполнения операций.

Ответ 3

Вместо вышеупомянутых различий - самое важное отличие заключается в session.run(), мы можем получить значения нескольких тензоров за один шаг.

Например:

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]))