leaf 叶子(张量)

在pytorch的tensor类中,有个is_leaf的属性,姑且把它作为叶子节点. is_leafFalse的时候,则不是叶子节点, is_leafTrue的时候为叶子节点(或者叶张量)

所以问题来了: leaf的作用是什么?为什么要加 leaf?
我们都知道tensor中的 requires_grad()属性,当requires_grad()为True时我们将会记录tensor的运算过程并为自动求导做准备,但是并不是每个requires_grad()设为True的值都会在backward的时候得到相应的grad,它还必须为leaf。这就说明: leaf成为了在 requires_grad()下判断是否需要保留 grad的前提条件

is_leaf()

  1. 按照惯例,所有requires_grad为False的张量(Tensor) 都为叶张量( leaf Tensor)
  2. requires_grad为True的张量(Tensor),如果他们是由用户创建的,则它们是叶张量(leaf Tensor).这意味着它们不是运算的结果,因此gra_fn为None
  3. 只有是叶张量的tensor在反向传播时才会将本身的grad传入的backward的运算中. 如果想得到当前tensor在反向传播时的grad, 可以用retain_grad()这个属性

例子:

>>> a = torch.rand(10, requires_grad=True)
>>> a.is_leaf
True
>>> b = torch.rand(10, requires_grad=True).cuda()
>>> b.is_leaf
False
# b was created by the operation that cast a cpu Tensor into a cuda Tensor
>>> c = torch.rand(10, requires_grad=True) + 2
>>> c.is_leaf
False
# c was created by the addition operation
>>> d = torch.rand(10).cuda()
>>> d.is_leaf
True
# d does not require gradients and so has no operation creating it (that is tracked by the autograd engine)
>>> e = torch.rand(10).cuda().requires_grad_()
>>> e.is_leaf
True
# e requires gradients and has no operations creating it
>>> f = torch.rand(10, requires_grad=True, device="cuda")
>>> f.is_leaf
True
# f requires grad, has no operation creating it

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性表——链表删除

王道链表题1-4 #include <iostream> #include <bits/stdc.h> using namespace std;typedef int Elemtype; //定义单链表 typedef struct Lnode{Elemtype data;struct Lnode *next; }Lnode,*Linklist; int a[4]{1,2,3,4}; int n4;//建立不带头节点的链表 void buil…

10个绕过反病毒的恶意用户技巧

原文&#xff1a;https://blog.netspi.com/10-evil-user-tricks-for-bypassing-anti-virus/ 介绍 译者注&#xff1a;很多不通顺的语句改掉了&#xff0c;还有反病毒解决方案统一翻译为了反病毒软件。无关紧要的话直接意思翻译 许多反病毒软件的部署配置方法较弱&#xff0c;为…

困扰爱因斯坦的「幽灵般的超距作用」,是如何被贝尔定理证明确实存在的?...

文章来源&#xff1a;机器之心作者&#xff1a;Ben Brubaker原文链接&#xff1a;https://www.quantamagazine.org/how-bells-theorem-proved-spooky-action-at-a-distance-is-real-20210720/我们理所当然地认为&#xff0c;世界上某个地方发生的一件事不会立即对远方的事物产生…

Jupyter notebook 导入和卸载 conda 虚拟环境

一、导入 进入Anaconda Prompt&#xff0c;激活要使用的虚拟环境。 conda activate xxx # 你要使用的虚拟环境名称安装 ipykernel 插件&#xff0c; 建议使用 pip 进行安装&#xff0c; conda 安装容易失败 pip install ipykernel安装完成之后&#xff0c;键入以下命令 pyt…

处理器管理与进程管理

4.python练习 1.观察父进程、子进程 2.观察进程运行状态 3。输入多个作业的作业编号&#xff0c;到达时间&#xff0c;所需CPU时间&#xff0c;形成列表&#xff0c;以备算法使用。 转载于:https://www.cnblogs.com/hclhechunlu/p/10580946.html

小白 LeetCode 242 有效的字母异位词

字母异位词 字符串由相同字母组成&#xff0c;但允许排列顺序不同。 如“aaabbb” 与 “ababab” 是字母异位词&#xff0c; 而“aabb” 与 “ab” 不是字母异位词。 题目&#xff1a;给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例…

LSTM之父:吐槽了两年,来划划重点:“这5篇最高引论文都源于我们。”

来源&#xff1a;AI科技评论作者&#xff1a;陈彩娴编辑&#xff1a;青暮昨晚&#xff0c;“递归神经网络之父”Jrgen Schmidhuber 在推特上亲自发文&#xff0c;称目前引用数最高的5项神经网络工作都基于他的团队成果&#xff0c;一时引起了网友的广泛讨论。这并不是他首次发声…

初学者配置环境变量

1. 首先选择计算机右击&#xff0c;选择最后一个属性&#xff0c;进入属性面板 2. 点击“高级系统设置”&#xff0c;点击“环境变量” 3. 在“系统变量”的处配置所需要配置的环境变量&#xff0c;点击“新建”按钮 4. 配置java的环境变量 JAVA_HOME 、CLASSPATH 、 Path5. JA…

小白 LeetCode 5605 检查两个字符串数据是否相等

题目&#xff1a;给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。 示例 1&#xff1a; 输入&#xff1a;word1 [&q…

Mac OS X下Maven的安装与配置

Mac OS X下Maven的安装与配置&#xff1a; 下载maven&#xff1a;https://maven.apache.org/download.cgi 打开Terminal,输入以下命令&#xff0c;设置Maven classpath&#xff0c;输入命令 vim ~/.bash_profile&#xff08;编辑环境变量配置文件&#xff09; MAVEN_HOME/…

演讲实录丨吴朝晖院士:从AI到CI——脑机智能的发展

来源&#xff1a;中国人工智能学会原创 &#xff1a;CAAI作者&#xff1a;吴朝晖院士吴朝晖中国科学院院士浙江大学校长IEEE/CAAI/CCF/CAA Fellow以下是吴朝晖院士的演讲实录&#xff1a;21世纪被称为“脑研究世纪”&#xff0c;伴随着脑科学和认知科学的兴起&#xff0c;特别是…

2019.3.23 捕获异常

PHP中try{}catch{}语句概述 1.PHP5添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。&#xff08;注&#xff1a;一定要先抛才能获取&#xff09; 2.需要进行异常处理的代码都必须放入 try 代码块内&#xff0c;以便捕获…

LeetCode 1480 一维数组的动态和

题目&#xff1a; 给你一个数组 nums 。数组「动态和」的计算公式为&#xff1a;runningSum[i] sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;[1,3,6,10] 解释&#xff1a;动态和计算过程为 [1,…

推荐系统简介

推荐系统简介 文章目录推荐系统简介1.推荐系统概述推荐系统目的我们推荐的目的&#xff1a;推荐系统的应用推荐系统的基本思想推荐系统的数据分析推荐系统分类2.推荐系统简介基于人口统计学的推荐基于内容的推荐基于协同过滤的推荐混合推荐3.推荐系统评测推荐系统的实验方法推荐…

清华大学孙茂松:透过喧嚣,坐看云起,NLP 的迷思与感悟

来源&#xff1a;智源社区图源&#xff1a;澎湃新闻2010年深层神经网络在语音识别研究方向上取得里程碑式进展&#xff0c;以这一事件为新起点和新动能&#xff0c;整个人工智能领域迅速跃迁到深度学习时代&#xff0c;包括自然语言处理&#xff08;NLP&#xff09;等关键领域也…

华为OD机试 - 贪吃的猴子(Java JS Python C)

在线OJ刷题 题目详情 - 贪吃的猴子 - Hydro 题目描述 一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。 猴子获取香蕉,每次都只能从行的开头或者末尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉…

软工大二下半年第四周学习进度

这一周&#xff0c;并没有什么收获&#xff0c;不过令我感到兴奋地是&#xff0c;HTML竟然可以做小游戏&#xff0c;我去网上搜简单小游戏的源代码&#xff0c;坦克大战&#xff0c;俄罗斯方块&#xff0c;五子棋童年的回忆&#xff0c;没想到自己可以做出来。还有一些程序员表…

2022年科学突破奖,9人共获奖金1500万美元,mRNA 新冠疫苗2位奠基人获奖

来源&#xff1a;科研圈编辑&#xff1a;David9 月 9 日&#xff0c;2022 年科学突破奖获奖名单在美国旧金山公布。生命科学奖、物理学奖、数学奖分别授予 5 个项目共 9 位科学家&#xff0c;每个项目奖金金额为 300 万元。新冠 mRNA 疫苗技术奠基者 Katalin Karik 与 Drew Wei…

Linux C语言 文件操作

打开函数 fopen 的原型如下。 FILE * fopen(char *filename, char *mode); 返回值&#xff1a;打开成功&#xff0c;返回该文件对应的 FILE 类型的指针&#xff1b;打开失败&#xff0c;返回 NULL。 表 2模式含 义说 明r只读文件必须存在&#xff0c;否则打开失败w只写若文件存…

多巴胺如何驱使我们克服复杂情况、逆境、情绪, 让我们掌控周遭的环境的

来源&#xff1a;本文摘自《贪婪的多巴胺》仅仅是“想要”很少能让你得到任何东西。你必须弄清楚如何获得它&#xff0c;以及它是否值得拥有。事实上&#xff0c;如果我们做事时不考虑怎么做和下一步做什么&#xff0c;失败甚至不是最坏的结果。结果可能从吃得有点儿多发展为不…