pytorch(05)计算图
张量的一系列操作,增多,导致可能出现多个操作之间的串行并行,协同不同的底层之间的协作,避免操作的冗余。计算图就是为了解决这些问题产生的。
计算图与动态图机制
1. 计算图
计算图用来描述运算的有向无环图,计算图有两个主要元素:结点Node和边Edge。
结点表示数据,如向量、矩阵、张量。
边表示运算,如加减乘除卷积、激活函数等
用计算图表示:y = (x + w)*(w+1)
a = x + w
b = w+ 1
y = a * b
从下往上进行。使用计算图的好处就是对于梯度求导比较方便
2. 计算图与梯度求导
y = (x+ w) * (w+1)
a = x+ w
b = w+1
y = a*b
\]
=b*1+a*1
=b+a
= (w+1)+(x+w)
=2*w+x+1
=2*1+2+1=5
3.叶子结点
用户创建的结点称为叶子结点,如x与 w
is_leaf:指示张量是否为叶子结点。他是整个计算图的根基
为什么要设立叶子结点,是为了节省内存,因为当程序结束后整个计算图的非叶子结点都是释放掉的
如果想使用非叶子结点的梯度,使用retain_grad(),执行这个方法就可以保留非叶子结点的梯度。
grad_fn:记录创建该张量时所用的方法(函数)在梯度传播的时候用到
比如y,y.grad_fn = <MulBackward0>y是用乘法得到的,所以在求解a和b的梯度时就会用乘法的求导法则去求解。叶子结点的grad_fn都是none
import torch
import numpy as np
x = torch.tensor([2.], requires_grad=True)
w = torch.tensor([1.], requires_grad=True)
a = torch.add(x,w)
a.retain_grad()
b = torch.add(w,1)
y = torch.mul(a,b)
y.backward()
# print(w.grad)
print("is_leaf:", x.is_leaf, w.is_leaf, a.is_leaf, b.is_leaf, y.is_leaf)
print("gradient",x.grad,w.grad,a.grad,b.grad,y.grad)
print("gradient_fun",x.grad_fn,w.grad_fn,a.grad_fn,b.grad_fn,y.grad_fn)
is_leaf: True True False False False
gradient tensor([2.]) tensor([5.]) tensor([2.]) None None
gradient_fun None None <AddBackward0 object at 0x00000214F45B6610> <AddBackward0 object at 0x00000214F65CC580> <MulBackward0 object at 0x00000214F65CC730>
pytorch(05)计算图的更多相关文章
- 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-2-autograd
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 torch.autograd就是为了方 ...
- 『PyTorch』第五弹_深入理解autograd_上:Variable属性方法
在PyTorch中计算图的特点可总结如下: autograd根据用户对variable的操作构建其计算图.对变量的操作抽象为Function. 对于那些不是任何函数(Function)的输出,由用户创 ...
- 理解PyTorch的自动微分机制
参考Getting Started with PyTorch Part 1: Understanding how Automatic Differentiation works 非常好的文章,讲解的非 ...
- pytorch 入门指南
两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...
- 莫烦pytorch学习笔记(二)——variable
.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子, ...
- [PyTorch入门]之从示例中学习PyTorch
Learning PyTorch with examples 来自这里. 本教程通过自包含的示例来介绍PyTorch的基本概念. PyTorch的核心是两个主要功能: 可在GPU上运行的,类似于num ...
- PyTorch全连接ReLU网络
PyTorch全连接ReLU网络 1.PyTorch的核心是两个主要特征: 一个n维张量,类似于numpy,但可以在GPU上运行 搭建和训练神经网络时的自动微分/求导机制 本文将使用全连接的ReLU网 ...
- [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上)
[源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 目录 [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 0x00 摘要 0x01 总体逻辑 0x02 废弃 ...
- [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下)
[源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 目录 [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 0x00 摘要 0x01 前文回顾 0x02 Te ...
- [源码解析] PyTorch如何实现前向传播(3) --- 具体实现
[源码解析] PyTorch如何实现前向传播(3) --- 具体实现 目录 [源码解析] PyTorch如何实现前向传播(3) --- 具体实现 0x00 摘要 0x01 计算图 1.1 图的相关类 ...
随机推荐
- A - 敌兵布阵 ——B - I Hate It——C - A Simple Problem with Integers(线段树)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...
- CS144学习(1)Lab 0: networking warmup
CS144的实验就是要实现一个用户态TCP协议,对于提升C++的水平以及更加深入学习计算机网络还是有很大帮助的. 第一个Lab是环境配置和热身,环境按照文档里的配置就行了,前面两个小实验就是按照步骤来 ...
- Ubuntu下跑通py-faster-rcnn、详解demo运作流程
在不同的服务器不同的机器上做过很多次实验,分别遇到各种不一样的错误并且跑通Py-Faster-RCNN,因此,在这里做一个流程的汇总: 一.下载文件: 首先,文件的下载可以有两种途径: 1.需要在官网 ...
- java8按照lamda表达式去重一个list,根据list中的一个元素
/** * 按照指定字段给list去重 * @param list * @return */ public static List<DataModel> niqueList(List< ...
- 记一次 Raven2 渗透(phpmailer漏洞+UDF提权)
目录: 1. 寻找IP 2.dirb目录爆破 2.PHPMailer漏洞反弹得到shell 3.python版本的exp修改 4.查看wordpress的wp-config.php配置文件得到数据库账 ...
- code screenshot beautify plugin & 代码截图美化插件
code screenshot beautify plugin & 代码截图美化插件 代码截图美化 codesnap 微信分享代码截图 https://github.com/kufii/Cod ...
- CSS pseudo element All In One
CSS pseudo element All In One CSS 伪元素 https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elemen ...
- Immutable.js 实现原理
Immutable.js 实现原理 Immutable collections for JavaScript v4.0.0-rc.12 released on Oct 31, 2018 https:/ ...
- JS Object Deep Copy & 深拷贝
JS Object Deep Copy & 深拷贝 针对深度拷贝,需要使用其他方法 JSON.parse(JSON.stringify(obj));,因为 Object.assign() 拷贝 ...
- js coverage testing
js coverage testing 测试覆盖率 istanbul 伊斯坦堡/伊斯坦布尔 https://istanbul.js.org/ jest coverage https://jestjs. ...