“ ValueError:matmul:输入操作数1的核心尺寸0不匹配(大小2与1不同)”

时间:2020-09-13 20:36:04

标签: python numpy matrix-multiplication

我刚刚开始学习Python / NumPy。我想编写一个函数,该函数将应用具有2个输入和1个输出以及给定的权重矩阵的操作,即两个形状为(2,1)的NumPy数组,并且应该使用tanh返回形状为(1,1)的NumPy数组。这是我想出的:

import numpy as np
def test_neural(inputs,weights):
    result=np.matmul(inputs,weights)
    print(result)
    z = np.tanh(result)
    return (z)
x = np.array([[1],[1]])
y = np.array([[1],[1]])

z=test_neural(x,y)
print("final result:",z)

但是我遇到了以下matmul错误:

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 1)

有人可以告诉我我在想什么吗?

1 个答案:

答案 0 :(得分:1)

问题在于矩阵乘法的维数。

您可以将共享尺寸的矩阵相乘(更多信息here):

(M , N) * (N , K) => Result dimensions is (M, K)

您尝试相乘:

(2 , 1) * (2, 1)

但是尺寸是非法的。

因此,您必须在相乘之前先转置inputs(只需将.T应用于矩阵),就可以得到有效的相乘尺寸:

(1, 2) * (2, 1) => Result dimension is (1, 1)

代码:

import numpy as np
def test_neural(inputs,weights):
    result=np.matmul(inputs.T, weights)
    print(result)
    z = np.tanh(result)
    return (z)
x = np.array([[1],[1]])
y = np.array([[1],[1]])

z=test_neural(x,y)

# final result: [[0.96402758]]
print("final result:",z)