这个专栏主要是想和大家分享一下深度学习的基础知识,主要是以吴恩达老师深度学习课程内容作为基础,并补充了很多其他内容希望让整体内容更加容易理解和系统化。如果想要了解具体专栏里面有什么内容的话,可以看一看我们专栏的目录,在目录里面还说明了小伙伴的分工,这些内容都是所有小伙伴们一起努力完成的,有希望和我们一起学习的的小伙伴也可以加入我们啊。另外我们还将内容以书籍的形式放到了github上,之后还会陆续上传源码实现等其他内容。我们还会分享深度学习-论文阅读专栏强化学习-基础知识专栏强化学习-任务阅读专栏,也欢迎大家关注。可能会有很多错漏,希望大家批评指正!还是那句话,不要高估一年的努力,也不要低估十年的积累,与君共勉!

6. 计算图

6.1 计算图的定义

​ 计算图是用箭头画出来的,从左到右的计算。以下以函数 J = 3 ( a + b c ) J=3(a+bc) J=3(a+bc)为例。
​ 如图所示,先计算出bc的数值,并将其存在变量u中,之后计算a+u,并将其存在变量v中,之后计算3*v,计算结果即为变量J 的数值。从左到右,箭头表示出了计算的顺序。
6.png

6.2 计算图的导数运算

​ 那么如何计算J的导数呢?如图中所示:
7.png
​ 结合链式法则,从最右侧算起, d J / d v = 3 , 故 d J = 3 d v 。 d J / d a = d J / d v ∗ d v / d a = 3 ∗ 1 = 3 dJ/dv=3,故dJ=3dv。dJ/da=dJ/dv*dv/da=3*1=3 dJ/dv=3,dJ=3dvdJ/da=dJ/dvdv/da=31=3;这个过程其实就是反向传播。那dJ/du是多少呢?根据链式法则,从图中右侧向左计算, d J / d u = d J / d v ∗ d v / d u = 3 ∗ 1 = 3 dJ/du=dJ/dv*dv/du=3*1=3 dJ/du=dJ/dvdv/du=31=3

​ 同理可知 d J / d b = d J / d v ∗ d v / d u ∗ d u / d b = 3 ∗ 1 ∗ c = 6 ; d J / d c = d J / d v ∗ d v / d u ∗ d u / d c = 3 ∗ 1 ∗ 3 = 9 dJ/db=dJ/dv*dv/du*du/db=3*1*c=6;dJ/dc=dJ/dv*dv/du*du/dc=3*1*3=9 dJ/db=dJ/dvdv/dudu/db=31c=6;dJ/dc=dJ/dvdv/dudu/dc=313=9

更多推荐