| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> pytorch autograd.grad -> 正文阅读 |
|
[人工智能]pytorch autograd.grad |
pytorch是动态图,即计算图的搭建和运算是同时的,随时可以输出结果;而tensorflow是静态图。 在pytorch的计算图里只有两种元素:数据(tensor)和运算(operation) 运算包括:加减乘除、开方、幂指对、三角函数等可求导运算。 数据可分为:叶子节点和非叶子节点;叶子节点是用户创建的节点,不依赖其他节点;叶子节点和非叶子节点的区别在于反向传播结束后,非叶子节点的梯度会被释放掉,只保留叶子节点的梯度,这样就节省了内存。如果想要保留非叶子节点的梯度,可以使用 torch.tensor具有以下属性:
对于 当我们想要对某个Tensor变量求梯度时,需要先指定
pytorch提供两种求梯度的方法: 一个简单的求导例子是 y = ( x + 1 ) × ( x + 2 ) y=(x+1)\times(x+2) y=(x+1)×(x+2),计算 ? y ? x \frac{\partial y}{\partial x} ?x?y?,假定 x = 2 x=2 x=2,先画出计算图:
? y ? x = ? y ? a ? a ? x + ? y ? b ? b ? x = ( x + 2 ) × 1 + ( x + 1 ) × 1 → 7 \frac{\partial y}{\partial x}=\frac{\partial y}{\partial a}\frac{\partial a}{\partial x}+\frac{\partial y}{\partial b}\frac{\partial b}{\partial x}=(x+2)\times1+(x+1)\times1\to7 ?x?y?=?a?y??x?a?+?b?y??x?b?=(x+2)×1+(x+1)×1→7 使用
观察下这几个tensor的属性:
使用backward()函数反向传播计算tensor的梯度时,并不计算所有tensor的梯度,而是只计算满足这几个条件的tensor的梯度:1.类型为叶子节点、2.requires_grad=True、3.依赖该tensor的所有tensor的requires_grad=True。所有满足条件的变量梯度会自动保存到对应的grad属性里。 使用
因为指定了输出y,输入x,所以返回值就是 ? y ? x \frac{\partial y}{\partial x} ?x?y?这一梯度,完整的返回值其实是一个元素,我们仅需要元组的第一个元素。 再举另外一个复杂一点且高阶求导的例子: z = x 2 y z=x^2y z=x2y,计算 ? z ? x , ? z ? y , ? 2 z ? 2 x \frac{\partial z}{\partial x},\frac{\partial z}{\partial y},\frac{\partial^2 z}{\partial^2 x} ?x?z?,?y?z?,?2x?2z?,假设给定 x = 2 , y = 3 x=2,y=3 x=2,y=3 手算可以得到: ? z ? x = 2 x y → 12 , ? z ? y = x 2 → 4 , ? 2 z ? 2 x = 2 y → 6 \frac{\partial z}{\partial x}=2xy\to12,\frac{\partial z}{\partial y}=x^2\to4,\frac{\partial^2 z}{\partial^2 x}=2y\to6 ?x?z?=2xy→12,?y?z?=x2→4,?2x?2z?=2y→6 求一阶导可以用
我们也可以使用
为什么不在这里面同时也求对
接下来看如何求高阶导,理论上其实是上面的
这里出现了报错,虽然
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 16:08:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |