吴恩达深度学习课程(计算图和pytorch动态计算梯度)
吴恩达深度学习课程(计算图和pytorch动态计算梯度) 计算图以及pytoch动态计算图代码构建
计算图
- 初次接触计算图,还以为计算图是什么高深的东西,其就是表述了一个计算过程,是用来描述运算的有向无环图【图中自左向右计算,自有向左是一个反向传播过程】
- 上图表示的计算过程就是
J=3*(a+b*c)
pytorch中的计算图自动构建
- pytorch中的计算图dynamic computation graph(DCG)——即动态计算图
- 下图为对上图中的计算图的pytorch代码实现
|
|
- 输出结果
tensor([3.])
tensor([6.])
tensor([9.])
<MulBackward0 object at 0x0000012FF265C208>
<AddBackward0 object at 0x0000012FF265C208>
<MulBackward0 object at 0x0000012FF265C208>
pytorch中的一些参数说明
-
backward:当调用backward函数时,只有requires_grad为true以及is_leaf为true的节点才会被计算梯度,即grad属性才会被赋予值。
-
data: 变量中存储的值,如x中存储着1,y中存储着2,z中存储着3
-
requires_grad:该变量有两个值,True 或者 False,如果为True,则加入到反向传播图中参与计算。
-
grad:该属性存储着相关的梯度值。当requires_grad为False时,该属性为None。即使requires_grad为True,也必须在调用其他节点的backward()之后,该变量的grad才会保存相关的梯度值。否则为None
-
grad_fn:表示用于计算梯度的函数。返回值例子:
<AddBackward0 object at 0x0000012FF265C208>
-
is_leaf:为True或者Falsejiedain,表示该节点是否为叶子节点。【只有是叶子结点才会存有梯度信息,否则grad为None】
-
retain_grad :执行该方法,可以保存计算过程中非叶子节点的梯度信息。 AAA
后记
- 今天看到一句话,感觉还不错:观人与酒后,观人于忽略,观人于临财临富。
- 现在突然想继续保持对网络安全的热枕,无论是社会工程还是纯技术。