Tensorflow eval() - (a/b).eval() 和 (a.eval()/b.eval()) 的不同结果
Tensorflow eval() - different results for (a/b).eval() and (a.eval()/b.eval())
我目前 运行 遇到了一个问题,即 tensorflow 没有产生我想要的结果。当我尝试调试问题时,我注意到直到一个部门,一切似乎都很好。
https://imgur.com/a/DT4RWiS
谁能告诉我这里可能发生了什么?
这是因为tensorflow中的/
运算符遵循Python2语法,进行整数除法(参见https://www.tensorflow.org/api_docs/python/tf/div)。您应该改用 tf.divide
。一般来说,对于张量之间的任何数学运算,您应该使用 tf.operation_name
可能涉及一些随机性。考虑以下示例:
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
填充不同的随机数
我目前 运行 遇到了一个问题,即 tensorflow 没有产生我想要的结果。当我尝试调试问题时,我注意到直到一个部门,一切似乎都很好。
https://imgur.com/a/DT4RWiS
谁能告诉我这里可能发生了什么?
这是因为tensorflow中的/
运算符遵循Python2语法,进行整数除法(参见https://www.tensorflow.org/api_docs/python/tf/div)。您应该改用 tf.divide
。一般来说,对于张量之间的任何数学运算,您应该使用 tf.operation_name
可能涉及一些随机性。考虑以下示例:
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
填充不同的随机数