【发布时间】:2019-10-02 17:44:59
【问题描述】:
所以我想argmax y0,我在numpy和tensorflow 2中测试过,结果不一样。 不知道为什么。
maxy0 = np.amax(y0)
e0 = np.exp(y0 - maxy0)
p0 = e0 / np.sum(e0)
y0 = np.log(1e-20 + p0)
print(y0)
[[-46.0517 -46.0517 -46.0517 ... -46.0517 -46.0517 -46.0517]]
np.argsort(-y0)
array([[ 11, 0, 26664, ..., 13337, 13330, 40001]])
tf.argsort(-y0)
array([[ 11, 0, 1, ..., 39999, 40000, 40001]], dtype=int32)
为什么它们不同?
【问题讨论】:
-
你有一个相等数字的数组......因为默认情况下使用的合并算法不稳定,所以不能保证它们会产生相同的结果
-
就像@rafaelc 所说,您可以在
np.argsort和tf.argsort中设置稳定参数。默认为不稳定排序。 -
@rafaelc 并非所有数字都相等,但大多数数字都是相等的,但我认为您的回答是有道理的。谢谢!
标签: python numpy tensorflow tensorflow2.0