Python tf.argsort和np.argsort给出了不同的结果
所以我想要argmax y0,我在numpy和tensorflow 2中测试了它,结果是不同的。 不知道为什么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
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)