{ "title": "ValueError Traceback (most recent call last) Cell In[20], line 67 64 nn = NeuralNetwork(2, 3, 1) 66 # 训练神经网络 ---> 67 nn.train(X, y, 10000) 69 # 预测新的数据 70 print(nn.predict(X))

Cell In[20], line 49, in NeuralNetwork.train(self, X, y, epochs) 47 for i in range(epochs): 48 output = self.forward(X) ---> 49 self.backward(X, y, output)

Cell In[20], line 36, in NeuralNetwork.backward(self, X, y, output) 34 self.error = y - output 35 self.delta2 = self.error * self.sigmoid_derivative(output) ---> 36 self.error_hidden = np.dot(self.delta2, self.W2.T) 37 self.delta1 = self.error_hidden * self.sigmoid_derivative(self.a1) 39 # 更新权重和偏置

File <array_function internals>:180, in dot(*args, **kwargs)

ValueError: shapes (50,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0) 哪里出错,如何修改 ValueError Traceback (most recent call last) Cell In[21], line 67 64 nn = NeuralNetwork(2, 3, 1) 66 # 训练神经网络 ---> 67 nn.train(X, y, 10000) 69 # 预测新的数据 70 print(nn.predict(X))

Cell In[21], line 49, in NeuralNetwork.train(self, X, y, epochs) 47 for i in range(epochs): 48 output = self.forward(X) ---> 49 self.backward(X, y, output)

Cell In[21], line 36, in NeuralNetwork.backward(self, X, y, output) 34 self.error = y - output 35 self.delta2 = self.error * self.sigmoid_derivative(output) ---> 36 self.error_hidden = np.dot(self.delta2.T, self.W2)#原来是self.error_hidden = np.dot(self.delta2, self.W2.T) 37 self.delta1 = self.error_hidden * self.sigmoid_derivative(self.a1) 39 # 更新权重和偏置

File <array_function internals>:180, in dot(*args, **kwargs)

ValueError: shapes (3,50) and (3,1) not aligned: 50 (dim 1) != 3 (dim 0) 修改后还是出错内容:在修���后的代码中,出现了新的错误。错误信息显示,矩阵的形状不匹配,无法进行矩阵乘法操作。具体来说,错误发生在第36行的代码 self.error_hidden = np.dot(self.delta2.T, self.W2) 中。

根据错误信息,可以看出 self.delta2 的形状是 (3, 50),而 self.W2 的形状是 (3, 1)。在矩阵乘法操作中,两个矩阵的列数必须相等,才能进行乘法运算。但是,这里 self.delta2 的列数是50,而 self.W2 的行数是3,所以无法进行乘法运算。

为了解决这个问题,需要将两个矩阵的形状调整为可以相乘的形状。可以通过转置矩阵来改变形状,或者改变矩阵的维度。

在这里,可以将 self.delta2 的形状改为 (50, 3),然后再进行矩阵乘法操作。修改后的代码如下:

self.error_hidden = np.dot(self.W2, self.delta2.T)

这样就可以解决这个错误。 }

Python 神经网络训练中的 ValueError: shapes (50,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0) 错误解决

原文地址: https://www.cveoy.top/t/topic/qqAK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录