今天被PyTroch tensor的requires_grad
搞了一把。具体情况是创建一个tensor和在后续的使用过程中,对requires_grad
的取值会影响到python存储的变量是否为leaf node。说起来很抽象,直接上代码。
(有关leaf node,请参考我的另外一篇博客,https://blog.csdn.net/huyaoyu/article/details/81059315)
以下代码测试在PyTorch 1.3.1上。
import torch
if __name__ == "__main__":
a = torch.tensor([1.0], requires_grad=False)
print("a.is_leaf = {}. ".format( a.is_leaf ))
b = torch.tensor([1.0], requires_grad=True)
print("b.is_leaf = {}. ".format( b.is_leaf ))
c = torch.tensor([1.0], requires_grad=False).clone()
print("c.is_leaf = {}. ".format( c.is_leaf ))
d = torch.tensor([1.0], requires_grad=False).detach()
print("d.is_leaf = {}. ".format( d.is_leaf ))
e = torch.tensor([1.0], requires_grad=False).cuda()
print("e.is_leaf = {}. ".format( e.is_leaf ))
f = torch.tensor([1.0], requires_grad=True).clone()
print("f.is_leaf = {}. ".format( f.is_leaf ))
g = torch.tensor([1.0], requires_grad=True).detach()
print("g.is_leaf = {}. ".format( g.is_leaf ))
h = torch.tensor([1.0], requires_grad=True).cuda()
print("h.is_leaf = {}. ".format( h.is_leaf ))
i = torch.tensor([1.0], requires_grad=True).clone().detach()
print("i.is_leaf = {}. ".format( i.is_leaf ))
j = torch.tensor([1.0], requires_grad=True).detach().clone()
print("j.is_leaf = {}. ".format( j.is_leaf ))
k = torch.tensor([1.0], requires_grad=True).cuda().detach()
print("k.is_leaf = {}. ".format( k.is_leaf ))
各位猜一下输出都是什么?
输出是这样的(PyTorch 1.3.1):
a.is_leaf = True.
b.is_leaf = True.
c.is_leaf = True.
d.is_leaf = True.
e.is_leaf = True.
f.is_leaf = False.
g.is_leaf = True.
h.is_leaf = False.
i.is_leaf = True.
j.is_leaf = True.
k.is_leaf = True.
其中f
和h
的输出显示对应的python变量不再是leaf node了。其原因在于torch.tensor([1.0], requires_grad=True)
将返回一个设置了requires_grad = True
的tensor,这个tensor的所有后续的.clone()
和.cuda()
操作都是“可微”的,也就是说.clone()
和.cuda()
操作都将返回一个非leaf node。于是如果我们想确保得到的python变量是一个leaf node,最保险的做法是在使用类似于torch的tensor()
或zeros()
函数时,不指定requires_grad
,此时可以对得到的tensor随意操作.clone()
和.cuda()
并赋值给其他python变量。在得到最终python变量后,通过显式对requires_grad
成员变量赋值从而设自动梯度运算请求。
https://discuss.pytorch.org/t/how-to-define-a-leaf-tensor-in-pytorch-0-4-1/28461/5
usermod命令修改系统帐户及账户相关的各项属性。如果用户的数字用户ID、用户名或用户的主目录发生更改,则必须确保在执行此命令时,命名用户未执行任何进程。usermod在Linux上对此进行检查,但仅检查用户是否根据其他架构上的utmp登录。您必须手动更改任何crontab文件或at作业的所有者。必须在NIS服务器上进行涉及NIS的任何更改。usermod命令的操作修改的是/etc/passwd和/etc/shadow这两个文件中的内容。........._usermod
通俗易懂:https://www.zhihu.com/question/24124998
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在国内市场上,stm32是谜一样的存在。工控领域,除了51单片机,大概就是stm32的应用最广。其实不管是在消费类玩具电子,还是工业生产、物联网,stm32都有它的一席之地。近年来,随着m7的发布,现在stm32的最高频率甚至可以达到600M,这个频率基本上可以运行uclinux..._nxp flm
今天太阳显然是给力过了头,让人留恋起昨日深圳湾刚刚好的火烧云。这两天,“直把深圳当郑州”的节奏。有一句话我清晰地记得:你坐在单车后面,对我们经过的风景说三道四,直到一句话的时候,我才恍如隔世,意犹未尽地错把后面的人嫁接为你。有一件事我还是窝在心里三分钟:我依旧对什么生气,进而我知道我应该为什么而高兴。我不再埋怨我以为的你做错的事情——是因为我知道到最后事情终将不重要,而人甚至陪伴才
错误信息:ORA-01652: unable to extend temp segment by 128 in tablespace EAS_T_STANDARD转自:http://www.oraclefans.cn/forum/showblog.jsp?rootid=4625解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程...
最近用Qt写一个项目时出现了undefined reference to 'vtable for class::methode'的错误!一 描述 程序结构如下: 共享库: libyqmath.so 有个类CMyDraw --完成一些绘画操作 1. 编译成功,存放在../../..
DNS,全称Domain Name System,即域名解析系统。 DNS帮助用户在互联网上寻找路径。在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。比如,您只需键入www.baidu.com,而不是“119.75.217.109”。即可访问ICANN的官方..._bind centeros
伺服电机(servo motor )是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。伺服电机可使控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。分为直流和交流伺服电动机两...
Q1:您当前是如何实现您的消息推送的?Q2:您使用模板消息推送是否会遇到: 1. 需要推送的对象涉及多个场景,需要被提醒多次? 2. 需要推送的时间点超出操作后7天时间范围?Q3: 收集了足够的formId,最终频繁的推送导致客户无法接收到有效信息?当然模板消息的推送方式和限制是有问题的么? 不 没有问题!但是依旧会有一些特殊场景需要突破模板消息的限制。被..._不开通微信模板能推送消息吗
CAJ文件是知网资源平台内的专属文件,一般下载下来的文件全是默认的.CAJ的文件格式,这也就导致了其不能在别的阅读器内阅读,如今喜欢用PDF文件格式看书的人又特别多,那两者是如何进行转换的呢,请看下方操作。第一步:点开百度搜索界面,搜索关键词迅捷PDF在线转换器。找到相关主页。第二步:点开转换器首页后,点击文档转换,找到CAJ转PDF。第三步:打开CAJ转PDF页面后,点击选择文件添加CAJ文件。..._怎么把caj转换成pdf
一、HTTP的请求根据 HTTP 标准,HTTP 请求可以使用多种请求方法。 HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。1、请求行即求情的数据格式中的第一行,由三个内容组成:请求方式、URL、HTTP协议的版本。说明:1.请求方式:GET or POST2.URL:请求的目标网址,或者IP地址3.HTTP协议版本:发送请求的HTTP协议_post请求行
css可以实现很多的图片效果,图片阴影效果就是其中之一,那么css如何给图片添加阴影效果?本篇文章就给大家介绍如何使用css给图片添加阴影,希望对你们有所助。方法1:设置box-shadow属性通过一个简单的代码示例来看看box-shadow属性的实现方法。css 图片阴影--box-shadow属性.demo{width: 400px;height: 300px;margin: 50px aut..._css怎么给图片加灰色阴影