搭建神经网络块(Building blocks of deep neural networks)
你已经看到过正向反向传播的基础组成部分了,它们也是深度神经网络的重要组成部分,现在我们来用它们建一个深度神经网络。
这是一个层数较少的神经网络,我们选择其中一层(方框部分),从这一层的计算着手。
在第l层你有参数W([l])和b([l]),正向传播里有输入的激活函数,输入是前一层a([l-1]),输出是a([l]),
我们之前讲过
z([l])=W([l]) a([l-1])+b([l]),
a([l])=g([l]) (z^([l])),
那么这就是你如何从输入a([l-1])走到输出的a([l])。
之后你就可以把z([l])的值缓存起来,我在这里也会把这包括在缓存中,因为缓存的z([i])对以后的正向反向传播的步骤非常有用(就是在反向传播中会再次使用这个值)。
然后是反向步骤或者说反向传播步骤,同样也是第l层的计算,你会需要实现一个函数输入为da([l]),输出da([l-1])的函数。
一个小细节需要注意,输入在这里其实是da([l])以及所缓存的z([l])值,之前计算好的z([l])值,除了输出da([l-1])的值以外,也需要输出你需要的梯度dW([l])和db([l]),这是为了实现梯度下降学习。
这就是基本的正向步骤的结构,我把它成为称为正向函数,类似的在反向步骤中会称为反向函数。
总结起来就是,在l层,你会有正向函数,输入a([l-1])并且输出a([l]),为了计算结果你需要用W