TensorFlow имеет два способа оценить часть графика: Session.run
по перечню переменных и Tensor.eval
. Есть ли разница между этими двумя?В TensorFlow, в чем разница между Session.run() и Tensor.eval()?
ответ
Если у вас есть Tensor
t, то вызов t.eval()
эквивалентен вызову tf.get_default_session().run(t)
.
Вы можете сделать сеанс по умолчанию следующим образом:
t = tf.constant(42.0)
sess = tf.Session()
with sess.as_default(): # or `with sess:` to close on exit
assert sess is tf.get_default_session()
assert t.eval() == sess.run(t)
Наиболее важным отличием является то, что вы можете использовать sess.run()
для извлечения значения многих тензоров в одном шаге:
t = tf.constant(42.0)
u = tf.constant(37.0)
tu = tf.mul(t, u)
ut = tf.mul(u, t)
with sess.as_default():
tu.eval() # runs one step
ut.eval() # runs one step
sess.run([tu, ut]) # evaluates both tensors in a single step
Обратите внимание, что каждый вызов eval
и run
будет выполнять весь график с нуля. Чтобы кэшировать результат вычисления, назначьте его tf.Variable
.
Сеанс часто задаваемых вопросов о тензорном потоке имеет answer to exactly the same question. Я бы просто идти вперед и оставить его здесь:
Если t
является Tensor
объектом, t.eval()
представляет собой сокращенная sess.run(t)
(где sess
является текущим сеансом по умолчанию Два следующие фрагменты кода эквивалентны:.
sess = tf.Session()
c = tf.constant(5.0)
print sess.run(c)
c = tf.constant(5.0)
with tf.Session():
print c.eval()
Во втором примере сеанс действует как менеджер контекста, который включает в себя установку в качестве сеанса по умолчанию для времени жизни блока с. Подход контекстного менеджера может привести к более сжатому коду для простых случаев использования (например, модульные тесты), если ваш код имеет остроумие h нескольких графиков и сеансов, может быть более явным для явных вызовов Session.run()
.
Я бы порекомендовал вам, по крайней мере, на протяжении всего FAQ, поскольку это может прояснить многое.
Eval() не может обрабатывать объект списка
tf.reset_default_graph()
a = tf.Variable(0.2, name="a")
b = tf.Variable(0.3, name="b")
z = tf.constant(0.0, name="z0")
for i in range(100):
z=a*tf.cos(z+i)+z*tf.sin(b-i)
grad=tf.gradients(z,[a,b])
init=tf.global_variables_initializer()
with tf.Session() as sess:
init.run()
print("z:",z.eval())
print("grad",grad.eval())
но Session.run() может
print("grad",sess.run(grad))
поправьте меня, если я ошибаюсь
- 1. Session.run() /Tensor.eval() прогона Tensorflow для сумасшедшего долгого времени
- 2. В чем разница между шагами и эпохами в TensorFlow?
- 3. В чем разница между Variable и ResourceVariable в Tensorflow
- 4. В чем разница между tf.matmul и tf.batch_matmul в Tensorflow?
- 5. В Tensorflow, в чем разница между переменной и тензором?
- 6. Tensorflow session.run feed dict механизм
- 7. В чем разница между этими двумя тензорами и почему?
- 8. Разница между TensorFlow Variable и тензором TensorFlow
- 9. Разница между переменной_scope и name_scope в TensorFlow
- 10. Оценка потерь с session.run ([]) в TensorFlow
- 11. Tensorflow Argmax: В чем разница между параметром «ось» и «размерность»?
- 12. В чем разница между tensorflow dynamic_rnn и rnn?
- 13. Tensorflow - В чем разница между фигурами (8,1) и (8,)
- 14. В чем разница между `tensorflow.nn.np` и` numpy`?
- 15. В чем разница между xavier_initializer и xavier_initializer_conv2d?
- 16. Разница между переменной и get_variable в TensorFlow
- 17. В чем разница между «и»?
- 18. В чем разница между `{}` и `[]`?
- 19. В чем разница между == и ===?
- 20. В чем разница между «+» и «\ +»?
- 21. В чем разница между + = и = +?
- 22. В чем разница между/* ... */и/** ... */
- 23. В чем разница между: и +:
- 24. В чем разница между $ {} и # {}
- 25. В чем разница между $ _. и $ _
- 26. В чем разница между = и: =
- 27. В чем разница между && и &?
- 28. В чем разница между $ {} и # {}?
- 29. В чем разница между + и%?
- 30. В чем разница между + = и = +
ли это как-то можно кормить заполнитель? ([мой вопрос] (http://stackoverflow.com/questions/33810990/how-to-feed-a-placeholder)) – displayname
В чем заключается второй пример? Это просто, что вы можете оценить отдельные операции (или графики? Не уверены, какая разница)? – Pinocchio
Подождите, ваш пример действительно работает? Я попробовал: 'a = tf.constant (2.0) b = tf.constant (3.0) ab = tf.matmul (a, b)', и я просто получил жалобы от тензорного потока, что формы не совпадают, я думаю точнее, что ранг должен быть не менее 2. – Pinocchio