如何在python中乘以未对齐的numpy矩阵?

时间:2018-03-27 00:25:40

标签: python numpy sum np

我有两个numpy矩阵:第一个,indata的形状为(2, 0)。第二个(我的代码中self.Ws[0])的形状为(100, 0)

是否可以将这些矩阵相互乘以?

def Evaluate(self, indata):
    sum = np.dot(self.Ws[0], indata) + self.bs[0]
    self.As[0] = self.sigmoid(sum)
    for i in range(1, len(self.numLayers)):
        sum = np.dot(self.Ws[i], self.As[i-1] + self.bs[i])
        self.As[i] = self.softmax(sum)
    return self.As[len(self.numLayers)-1]

运行此代码时出现的错误如下:

File "C:/Users/1/PycharmProjects/Assignment4PartC/Program.py", line 28, in main
    NN.Train(10000, 0.1)
  File "C:\Users\1\PycharmProjects\Assignment4PartC\Network.py", line 53, in Train
    self.Evaluate(self.X[i])
  File "C:\Users\1\PycharmProjects\Assignment4PartC\Network.py", line 38, in Evaluate
    sum = np.dot(self.Ws[0], indata) + self.bs[0]
ValueError: shapes (100,) and (2,) not aligned: 100 (dim 0) != 2 (dim 0)

希望有人可以帮我解决这个问题 - 任何帮助都表示赞赏!如果有人需要关于我正在运行的更详细的信息,请告诉我,我会更新我的帖子。

1 个答案:

答案 0 :(得分:1)

除非数组为空,否则数组的形状(N, 0)不存在。您所拥有的可能是形状(2,)(100,)。将这些对象相乘的一种方法是:

np.dot(self.Ws[0].reshape((-1, 1)), indata.reshape((1, -1)))

这会给你一个(100, 2)数组。 无论这是你想从数学角度得到的,都很难说。