在教程中混淆了mxnet中的sum_axis

时间:2017-06-04 03:23:40

标签: mxnet

我正在阅读NDarray part上的mxnet教程,我对使用sum_axis函数感到困惑,例如:

>>> a = mx.nd.ones((2,3))
>>> c = mx.nd.sum_axis(a, axis=1)
>>> c.asnumpy()
    array([ 3.,  3.], dtype=float32)
>>> c = mx.nd.sum_axis(a, axis=0)
>>> c.asnumpy()
    array([ 2.,  2.,  2.], dtype=float32)

我想知道的是,当参数axis的值为1时,我认为它应该输出

array([ 2.,  2.,  2.], dtype=float32)

但不是

array([ 3.,  3.], dtype=float32)

当参数axis的值为1时,我认为sum_axis应计算列中的总和,但结果显示它计算沿行的总和。< / p>

似乎numpy也是这样计算的,我真的不明白为什么会这样。 所以任何人都可以解释一下吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

Numpy描述了2D数组中的轴。二维数组有两个相应的轴:第一个在行(轴0)上垂直向下运行,第二个轴在列(轴1)上水平运行。

检查链接,例如 https://docs.scipy.org/doc/numpy-1.12.0/glossary.html 对于MXNet也是如此。所以,在上面提到的例子中: a = [[1.,1.,1。],      [1.,1.,1。]]

轴0表示垂直向下。因此,它将为您提供输出[2.,2.,2。]和轴1表示水平跨列。所以,它会给你输出[3.,3。]