Python3 Numpy умножение: не может транслироваться вместе с фигурами (10, 10000) (10000, 10) - PullRequest
0 голосов
/ 16 декабря 2018

У меня проблема с использованием numpy в python3 по этой инструкции:

res = ( np.multiply(error, v_sigmop ))

Я пытаюсь умножить поэлементно, но у меня появляется странная ошибка:

res = ( np.multiply(error, v_sigmop ))
ValueError: operands could not be broadcast together with shapes (10,10000) (10000,10)

Эта операция не является недопустимой, поскольку количество столбцов соответствует количеству строк во втором массиве ...

Есть идеи?

1 Ответ

0 голосов
/ 16 декабря 2018

Я думаю, что вы, возможно, пытаетесь умножить 2 матрицы с формой (r1,c) и (c,r2)

. Вы можете использовать A.dot(B) для вашей задачи, которая будет умножать на 2 матрицы.

Вот пример:

>>> a = np.arange(12).reshape((3,4))
>>> b = np.arange(8).reshape((4,2))
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> b
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7]])
>>> a.dot(b)
array([[ 28,  34],
       [ 76,  98],
       [124, 162]])

Надеюсь, это поможет вам!

Редактировать

Поскольку вам не нужны несколько 2 матриц, вы хотитеумножать на скалярные, но множественные скаляры не являются вашей операцией, это означает, что вы не можете умножить 2 матрицы, например:

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

умножить на

array([[0, 1],
       [2, 3],
       [4, 5]])

Это недопустимая операциядля нескольких скаляров 2.

У вас есть только операции:

>>> a = np.arange(12).reshape((3,4))
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])


# Multiple all elements with a scalar
>>> np.multiply(a,0)
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])


# Multiple each column with a column
>>> b = np.arange(3).reshape((3,1))
>>> b
array([[0],
       [1],
       [2]])
>>> np.multiply(a,b)
array([[ 0,  0,  0,  0],
       [ 4,  5,  6,  7],
       [16, 18, 20, 22]])


# Multiple each row with a row
>>> b = np.arange(4).reshape((1,4))
>>> b
array([[0, 1, 2, 3]])
>>> np.multiply(a,b)
array([[ 0,  1,  4,  9],
       [ 0,  5, 12, 21],
       [ 0,  9, 20, 33]])


# Multiple each element with the same shape
>>> b = np.arange(12).reshape((3,4))
>>> b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.multiply(a,b)
array([[  0,   1,   4,   9],
       [ 16,  25,  36,  49],
       [ 64,  81, 100, 121]])
...