import numpy as np
import tensorflow as tf
from keras import backend as K
sess = tf.InteractiveSession()
box_scores1 = tf.constant([[[ 9.188682, 11.484599 ],
[10.06533, 7.557296 ]],
[[10.099248, 10.591225 ],
[10.592823 , 7.8770704]]])
box_scores2 = tf.random_normal([2,2,2], mean=10, stddev=1, dtype=tf.float32, seed = 1)
box_class_scores1 = K.max(box_scores1, axis=-1)
box_class_scores2 = K.max(box_scores2, axis=-1)
print(box_scores1.eval())
print(box_scores2.eval())
print(box_class_scores1.eval())
print(box_class_scores2.eval())
输出:
[[[ 9.188682 11.484599 ]
[10.06533 7.557296 ]]
[[10.099248 10.591225 ]
[10.592823 7.8770704]]]
[[[ 9.188682 11.484599 ]
[10.06533 7.557296 ]]
[[10.099248 10.591225 ]
[10.592823 7.8770704]]]
[[11.484599 10.06533 ]
[10.591225 10.592823]]
[[10.242094 10.515779]
[12.083789 11.397354]]
因此,我们可以看到box_scores1和box_scores2中的值相同,但是应用max操作后获得的结果不同。 box_class_scores1和box_class_scores2的值如何不同?
答案 0 :(得分:0)
您的问题与max
函数无关,但是对tensorflow造成了误解,因为它的大多数操作都是符号性的,因此当您使用tf.random_mormal
时,它不会产生随机数,但是具有给定均值和标准分布的符号正态分布。
然后,每次您评估此分布时,它会生成不同的输出,因此您的第一个评估看起来不错,但是第二个评估产生了一个不同的输出,该输出被赋予max
,因此产生的输出不同于仅给出恒定的向量。