запутался в sum_axis в mxnet в туториале

Я читаю учебник по mxnet по частью NDarray и не понимаю, как использовать 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 должен вычислять сумму по столбцу, но результат показывает, что он вычисляет сумму по строкам.

И кажется, что numpy тоже так вычисляет, и я действительно не понимаю, почему именно так. Так кто-нибудь может объяснить это?

Спасибо!!


person ningyuwhut    schedule 04.06.2017    source источник


Ответы (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.]

person Roshani Nagmote    schedule 05.06.2017
comment
Спасибо! Это то, что я хочу. Но у меня еще вопрос, что делать, если осей больше 2-х. - person ningyuwhut; 06.06.2017
comment
Я думаю, что это визуальное представление и пример нарезки помогут вам понять это более подробно. stackoverflow.com/questions/40857930 / - person Roshani Nagmote; 06.06.2017