Pytorch深度学习实战3-5:详解计算图与自动微分机(附实例)
Posted Mr.Winter`
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytorch深度学习实战3-5:详解计算图与自动微分机(附实例)相关的知识,希望对你有一定的参考价值。
目录
1 计算图原理
计算图(Computational Graph)是机器学习领域中推导神经网络和其他模型算法,以及软件编程实现的有效工具。
计算图的核心是将模型表示成一张拓扑有序(Topologically Ordered)的有向无环图(Directed Acyclic Graph),其中每个节点 u i u_i ui包含数值信息(可以是标量、向量、矩阵或张量)和算子信息 f i f_i fi。拓扑有序指当前节点仅在全体指向它的节点被计算后才进行计算。
计算图的优点在于:
- 可以通过基本初等映射 的拓扑联结,形成复合的复杂模型,大多数神经网络模型都可以被计算图表示;
- 便于实现自动微分机(Automatic Differentiation Machine),对给定计算图可基于链式法则由节点局部梯度进行反向传播。
计算图的基本概念如表所示,基于计算图的基本前向传播和反向传播算法如表
符号 | 含义 |
---|---|
n n n | 计算图的节点数 |
l l l | 计算图的叶节点数 |
L L L | 计算图的叶节点索引集 |
C C C | 计算图的非叶节点索引集 |
E E E | 计算图的有向边集合 |
u i u_i ui | 计算图中的第 i i i节点或其值 |
d i d_i di | u i u_i ui 的维度 |
f i f_i fi | u i u_i ui的算子 |
α i \\alpha _i αi | u i u_i ui的全体关联输入 |
J j → i \\boldsymbolJ_j\\rightarrow i Jj→i | 节点 u i u_i ui关于节点 u j u_j uj的雅克比矩阵 |
P i \\boldsymbolP_i Pi | 输出节点关于输入节点的雅克比矩阵 |
2 基于计算图的传播
基于计算图的前向传播算法如下
基于计算图的反向传播算法如下
以第一节的图为例,可知 E = ( 1 , 3 ) , ( 2 , 3 ) , ( 2 , 4 ) , ( 3 , 4 ) E=\\left\\ \\left( 1,3 \\right) ,\\left( 2,3 \\right) ,\\left( 2,4 \\right) ,\\left( 3,4 \\right) \\right\\ E=(1,3),(2,3),(2,4),(3,4)。首先进行前向传播:
u 3 = u 1 + u 2 = 5 u 4 = u 2 u 3 = 15 \\begincases u_3=u_1+u_2=5\\\\ u_4=u_2u_3=15\\\\\\endcases u3=u1+u2=5u4=u2u3=15
J 1 → 3 = ∂ u 3 / ∂ u 1 = 1 J 2 → 3 = ∂ u 3 / ∂ u 2 = 1 J 2 → 4 = ∂ u 4 / ∂ u 2 = u 3 = 5 J 3 → 4 = ∂ u 4 / ∂ u 3 = u 2 = 3 \\begincases \\boldsymbolJ_1\\rightarrow 3=\\partial u_3/\\partial u_1=1\\\\ \\boldsymbolJ_2\\rightarrow 3=\\partial u_3/\\partial u_2=1\\\\ \\boldsymbolJ_2\\rightarrow 4=\\partial u_4/\\partial u_2=u_3=5\\\\ \\boldsymbolJ_3\\rightarrow 4=\\partial u_4/\\partial u_3=u_2=3\\\\\\endcases ⎩ ⎨ ⎧J1→3=∂u3/∂u1=1J2→3=∂u3/∂u2=1J2→4=∂u4/∂u2=u3=5J3→4=∂u4/∂u3=u2=3
接着进行反向传播:
P 4 = 1 P 3 = P 4 J 3 → 4 = 3 P 2 = P 4 J 2 → 4 + P 3 J 2 → 3 = 8 P 1 = P 3 J 1 → 3 = 3 \\begincases \\boldsymbolP_4=1\\\\ \\boldsymbolP_3=\\boldsymbolP_4\\boldsymbolJ_3\\rightarrow 4=3\\\\ \\boldsymbolP_2=\\boldsymbolP_4\\boldsymbolJ_2\\rightarrow 4+\\boldsymbolP_3\\boldsymbolJ_2\\rightarrow 3=8\\\\ \\boldsymbolP_1=\\boldsymbolP_3\\boldsymbolJ_1\\rightarrow 3=3\\\\\\endcases ⎩ ⎨ ⎧P4=1P3=P4J3→4=3P2=P4J2→4+P3J2→3=8P1=P3J1→3=3
3 神经网络计算图
一个神经网络的计算图实例如下,所有参数都可以用之前的模型表示
L
u
1
=
W
1
∈
R
n
1
×
n
0
u
2
=
b
1
∈
R
n
1
参考《深度学习之PyTorch实战计算机视觉》PDF
计算机视觉、自然语言处理和语音识别是目前深度学习领域很热门的三大应用方向。
计算机视觉学习,推荐阅读《深度学习之PyTorch实战计算机视觉》。学到人工智能的基础概念及Python 编程技能,掌握PyTorch 的使用方法,学到深度学习相关的理论知识,比如卷积神经网络、循环神经网络、自动编码器,等等。在掌握深度学习理论和编程技能之后,还会学到如何基于PyTorch 深度学习框架实战计算机视觉。《深度学习之PyTorch实战计算机视觉》中的大量实例在循序渐进地学习的同时,不断地获得成就感。
学习参考:
《深度学习之PyTorch实战计算机视觉》
两个版本的高清PDF,287页,带书签目录,文字可以复制。
网盘下载:http://106.13.73.98
以上是关于Pytorch深度学习实战3-5:详解计算图与自动微分机(附实例)的主要内容,如果未能解决你的问题,请参考以下文章
《深度学习与计算机视觉算法原理框架应用》PDF+《深度学习之PyTorch实战计算机视觉》PDF
深度学习-Pytorch张量tensor详解(线性回归实战)
深度之眼PyTorch训练营第二期 ---3计算图与动态图机制