Tensorflow eval () - разные результаты для (a / b) .eval () и (a.eval () / b.eval ()) - PullRequest
0 голосов
/ 04 июля 2018

В настоящее время я столкнулся с проблемой, когда тензор потока не дает результатов, которые я намеревался получить. Когда я попытался отладить проблему, я заметил, что до деления все работает нормально. https://imgur.com/a/DT4RWiS strange eval behavior

Может ли кто-нибудь просветить меня, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Может быть какая-то стохастичность. Рассмотрим следующий пример:

import tensorflow as tf

a = tf.random_uniform(shape=(4,), minval=1, maxval=2)
b = tf.random_uniform(shape=(4,), minval=1, maxval=2)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(a.eval()/b.eval())
    print((a/b).eval())

Когда вызываются a.eval() и (a/b).eval(), выполняется tf.random_uniform и тензор a заполняется различными случайными числами.

0 голосов
/ 04 июля 2018

Это связано с тем, что оператор / в тензорном потоке следует синтаксису Python 2 и выполняет целочисленное деление (см. https://www.tensorflow.org/api_docs/python/tf/div).. Вместо этого следует использовать tf.divide. В целом, для любой математической операции между тензорами следует использовать tf.operation_name

...