我有两个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)
希望有人可以帮我解决这个问题 - 任何帮助都表示赞赏!如果有人需要关于我正在运行的更详细的信息,请告诉我,我会更新我的帖子。
答案 0 :(得分:1)
除非数组为空,否则数组的形状(N, 0)
不存在。您所拥有的可能是形状(2,)
和(100,)
。将这些对象相乘的一种方法是:
np.dot(self.Ws[0].reshape((-1, 1)), indata.reshape((1, -1)))
这会给你一个(100, 2)
数组。
无论这是你想从数学角度得到的,都很难说。