接着上篇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的计算: