神经网络fully_connected层的forward 和backward实现

Posted fanhaha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络fully_connected层的forward 和backward实现相关的知识,希望对你有一定的参考价值。

 

接着上篇tensorflow compute graph的理解,其中operation node 需要给运算定义forward 和backward函数。这篇中我们实现一个简单的fully_connected layer的forward 和backward 函数:

class fullyconnect(Operation):
    def __init__(self, x, w, b): 
      super().__init__([x, w, b]) 
      self.x = x 
      self.w = w 
      self.b = b 
    def forward(self, x, w, b): 
      return x.dot(w)+b
    def backward(self, upstream_grad):
      dX = upstream_grad.dot(self.w.T)
      dW = (self.x.T).dot(upstream_grad)
      db = np.sum(upstream_grad)
      return dX, [dW, db]

 

技术图片

具体举一个简单的全连接网络结构来说明,为什么backward的中dX,dW,db的计算:

?

技术图片?

技术图片

?

以上是关于神经网络fully_connected层的forward 和backward实现的主要内容,如果未能解决你的问题,请参考以下文章

DL构建具有单隐藏层的2类分类神经网络-带有一个隐藏层的平面数据分类

计算机网络:网络层的基本概念

BP神经网络的理论理论常识

卷积神经网络对BN层的解释

BP神经网络—java实现

区块链隐私保护: 网络层的隐私保护机制