| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
在建立一个三层的神经网络,其中ReLU层反向传播需要进行一个np.multiply运算,按理说两个矩阵行数相同不是会进行自动填充吗?为什么总是报错: 
ValueError: operands could not be broadcast together with shapes (100,32) (100,16) 
 
附上代码: 
- class ReLULayer(object):
 
 -     def forward(self, input):  # 前向传播的计算
 
 -         self.input = input
 
 -         output = np.maximum(self.input,0)  
 
 -         return output
 
 -     def backward(self, top_diff):  # 反向传播的计算
 
 -         b = self.input
 
 -         b[b>0] =1
 
 -         b[b<0] = 0
 
 -         bottom_diff = np.multiply(b,top_diff)
 
 -         return bottom_diff
 
 
  复制代码 
然而我推测问题的根本应该不在这里。怀疑您在其他部分对梯度的计算出了问题 
ReLU 接收的回传梯度形状应该和输入的形状完全一致,这部分看不出问题,也检查一下其他部分吧 
 
 
 |   
 
 
 
 |