|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 接收的回传梯度形状应该和输入的形状完全一致,这部分看不出问题,也检查一下其他部分吧
|
|