尝试使用python层caffe实现我的自定义丢失层。我使用了这个example作为指导,并编写了forward
函数,如下所示:
def forward(self,bottom,top):
score = 0;
self.mult[...] = np.multiply(bottom[0].data,bottom[1].data)
self.multAndsqrt[...] = np.sqrt(self.mult)
top[0].data[...] = -math.log(np.sum(self.multAndsqrt))
然而,第二个任务,即实现backward
函数对我来说有点困难,因为我对python完全不熟悉。所以请帮我编写后面的部分。
下面是要实现的stocashtic梯度的成本函数及其导数:
注意,表中的p[i]表示ith输出神经元值。在
{{cd2>
在向后函数中,您只需计算})的偏导数,并将它们存储在相应的底部diff blob中:
Db
相对于其输入(p
和{所以你的后向函数看起来像:
请注意,您通常使用批处理的平均(而不是全部)错误。最后你会得到这样的结果:
^{pr2}$一旦计算了
Db
的偏导数,就可以像对前向传递函数所做的那样,将它们插入到上面的模板中。在相关问题 更多 >
编程相关推荐