Python tf.argsort和np.argsort给出了不同的结果

Python tf.argsort和np.argsort给出了不同的结果,python,numpy,tensorflow,tensorflow2.0,Python,Numpy,Tensorflow,Tensorflow2.0,所以我想要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]] 为什么它们不同?尝试将稳定参数更改为True,因为在tf.arg

所以我想要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]]

为什么它们不同?

尝试将稳定参数更改为True,因为在tf.argsort中默认为False
请参阅

您有一个相等数字的数组。。。由于默认情况下使用的合并算法不稳定,因此无法保证它们会产生与@rafaelc所说的相同的结果,您可以在
np.argsort
tf.argsort
中设置稳定参数。默认情况下,它是不稳定排序的。@rafaelc不是所有的数字都相等,但大多数都相等,但我认为你的答案是有道理的。谢谢
np.argsort(-y0)
array([[   11,     0, 26664, ..., 13337, 13330, 40001]])
tf.argsort(-y0)
array([[   11,     0,     1, ..., 39999, 40000, 40001]], dtype=int32)