【问题标题】:reduce_max function in tensorflow张量流中的reduce_max函数
【发布时间】:2018-12-30 11:52:20
【问题描述】:

截图

>>> boxes = tf.random_normal([ 5])
>>> with s.as_default():
...     s.run(boxes)
...     s.run(keras.backend.argmax(boxes,axis=0))
...     s.run(tf.reduce_max(boxes,axis=0))
...
array([ 0.37312034, -0.97431135,  0.44504794,  0.35789603,  1.2461706 ],
    dtype=float32)
3
0.856236

.

为什么我得到 0.8564。我预计该值为 1.2461。因为 1.2461 很大,对吧?

I am getting correct answer if i use tf.constant.
But I am not getting correct answer while using radom_normal

【问题讨论】:

  • 请不要将文字包含在图片或图像中。

标签: machine-learning argmax


【解决方案1】:

当您使用radom_normal 运行s.run() 时,每次都会重新生成一个新的boxes。所以你的三个结果是不同的。如果您想获得一致的结果,您应该只运行一次s.run()

result = s.run([boxes,keras.backend.argmax(boxes,axis=0),tf.reduce_sum(boxes,axis=0)])
print(result[0])
print(result[1])
print(result[2])

#print
[ 0.69957364  1.3192859  -0.6662426  -0.5895929   0.22300807]
1
0.9860319

另外,代码应该是文本格式而不是图片格式。

【讨论】:

  • 谢谢。抱歉图片。实际上是stackoverflow的新手。现在我将其更改为文本:-)
  • @Bubeshp 没关系。欢迎使用 stackoverflow。
【解决方案2】:

TensorFlow 与 numpy 不同,因为 TF 只使用符号操作。这意味着当您实例化 random_normal 时,您不会得到数值,而是符号正态分布,因此每次评估它时,您都会得到不同的数字

每次您使用此分布进行操作时,对于任何其他操作,您都会得到不同的数字,这就解释了您看到的结果。

【讨论】:

  • 谢谢!现在我明白了。抱歉放了图片...实际上是stackoverflow的新手
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 2023-03-13
  • 2018-11-20
  • 1970-01-01
  • 2017-09-02
相关资源
最近更新 更多