如何在python中乘法未对齐的numpy矩阵?
我有两个numpy矩阵:第一个,indata的形状是2,0。我代码中的第二个self.Ws[0]的形状为100,0 这些矩阵可以相乘吗如何在python中乘法未对齐的numpy矩阵?,python,numpy,sum,np,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
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)
希望有人能帮我解决这个问题-任何帮助都是感激的!如果有人需要更多关于我正在运行的内容的详细信息,请告诉我,我会更新我的帖子。除非数组为空,否则数组中没有形状N,0。你所拥有的可能是形状2和100,。将这些对象相乘的一种方法是:
np.dot(self.Ws[0].reshape((-1, 1)), indata.reshape((1, -1)))
这将给你一个100,2的数组。
从数学的角度来看,这是否是你想要得到的,这真的很难说。嘿,吉迪奥克,我不知道这些形状的矩阵是否可以彼此相乘。您希望得到什么输出?2 1d阵列的点积是内积。这两个数组的大小必须匹配。是否有任何方法可以转换为100,->100,1?您可以简单地使用arr.reforme-1,1将您的数组整形为N,1,其中N是数组的形状。我不确定你所做的在数学上是否合理。当然有可能有一个100,0形状的数组。但是错误表明Ws[i]是形状100,。所以Ws可能是n,100。但是我同意点的意图是不清楚的。这是可能的,但只适用于真正的空数组,即没有任何元素。这可能是因为我缺乏想象力,但我没有看到一个带有非空形状的空数组的用例。