torch中(required_grad_=True),根据mask替换掉部分值
举个例子
a = torch.randn(2, 3, 4)
a.requires_grad=True
a
tensor([[[ 1.2255, 1.5870, -0.5485, -0.4809],[-0.3167, -0.2933, -0.0604, 0.3498],[ 0.1436, 0.3083, 1.6776, -1.1144]],[[-1.5001, 0.7174, 0.2585, 0.2669],[-0.1319, -0.8247, 0.1929, -0.6142],[ 1.1407, 2.2324, -1.3897, -0.2413]]], requires_grad=True)
假设mask为:
mask
tensor([[False, True, True],[False, True, True]])
(1)如果假设b为:
b = torch.arange(16).view(2, 2, 4).float()
b.requires_grad = True
b
tensor([[[ 0., 1., 2., 3.],[ 4., 5., 6., 7.]],[[ 8., 9., 10., 11.],[12., 13., 14., 15.]]], requires_grad=True)
直接赋值会导致出错:
a[mask] = b
Traceback (most recent call last):File "<input>", line 1, in <module>
RuntimeError: a leaf Variable that requires grad is being used in an in-place operation.
这是因为叶子节点不能进行原地替换操作。
(2)介绍一个函数tgt.index_put_(indices, value):根据indices把tgt中的值替换为value。
另外,b的size也不能是[2, 2, 4]了,应该是[4, 4]。可以根据下面这个方法确定b的size。
a[mask].size()
torch.Size([4, 4])
则:
b = torch.arange(16).view(4, 4).float()
b.requires_grad = True
b
tensor([[ 0., 1., 2., 3.],[ 4., 5., 6., 7.],[ 8., 9., 10., 11.],[12., 13., 14., 15.]], requires_grad=True)
c = a.index_put((mask,), b)
c
tensor([[[ 1.2255, 1.5870, -0.5485, -0.4809],[ 0.0000, 1.0000, 2.0000, 3.0000],[ 4.0000, 5.0000, 6.0000, 7.0000]],[[-1.5001, 0.7174, 0.2585, 0.2669],[ 8.0000, 9.0000, 10.0000, 11.0000],[12.0000, 13.0000, 14.0000, 15.0000]]], grad_fn=<IndexPutBackward0>)
请注意:
- mask必须转为tuple,(mask,);不能使用tuple(mask),这两个的顺序不一样
(mask,)
(tensor([[False, True, True],[False, True, True]]),)
tuple(mask)
(tensor([False, True, True]), tensor([False, True, True]))
2.这个out-place操作,不是in-place操作,需要赋值为c才能进行前向、后向传播和梯度更新。
torch中(required_grad_=True),根据mask替换掉部分值相关推荐
- 如何把PDF中的一页内容替换掉
在工作中我们常常会用到PDF文档,有时其中一页的内容不合适,如果删除重新编写会比较费时,是否可以直接用其他文档的一页直接替换掉呢? 对于PDF的相关修改我们需要用到PDF编辑器.首先运行极速PDF编辑 ...
- 如何将网页下载的文档中的手动换行符替换掉
在现实工作当中,经常会遇到下载的文档多一些特殊的符号,如下图: 首先为了更好的展现,需要先做如下设置, 这样文章中的所有标记都会显示出来 这实际是由于不同的存在形式引起的,如果对文档不进行合理的格式转 ...
- 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值) 参考文章: (1)在Android中自定义捕获Application全局异常,可以 ...
- php替换视频教程,替换掉视频运动中的文字 | 修改视频文字的内容(附带软件与详细教程)...
对于广告视频宣传,不知狸友们曾经是否有过这样的想法,利用借势营销的手段,将某段热门的视频影视片段修改成广告的内容,以达到热点广告的目的.在这个互联网比较发达的时代,广告形式各式各样,唯有创新或者比较突 ...
- SQL语句批量去除、替换掉某列(字段)中包含的某个字符串
原文链接: SQL语句批量去除.替换掉某列(字段)中包含的某个字符串,一并总结下列的增删改操作_Java Punk的博客-CSDN博客_sql删除包含某种字所有信息 以MySQL为例: 以下案例假设 ...
- 编译器中,光标变宽,输入字符会替换掉原字符
遇到情形:编译器中,光标变宽,输入字符会替换掉原字符 如上图所示,在Qt或者QNX中遇到这种情形,光标变宽,输入b会替换后面的字符a 原因: 不小心按了insert键 再按下insert键就好了.
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 对Word文档中的指定内容进行替换
不知大家在对Word操作时,有没有遇到需要对指定内容进行替换这种需求.前几天公司有个需求,就是对PDF邀请函的姓名那部分内容进行替换,因为本人以前对Word的书签有过操作,所以思路就是通过将这部分内容 ...
- js替换html中的字符串,js怎么替换字符串?
在js中,可以使用str.replace()方法来替换字符串.replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串:然后返回一个新的字符串. replace( ...
最新文章
- Oracle 用户管理
- 产业为主谋定共享运行-农业大健康·万祥军:特色化小镇时代
- WebRTC大会火爆上演,网易云信谈音视频研发三大突破点
- wireshark1.8捕获无线网卡的数据包——找不到无线网卡!
- poj-1980 Unit Fraction Partition **
- android 关于关于子线程更新UI的一些事
- GOF之结构型模式Ⅱ(重点)
- git 日常 常用命令
- 常用中文字体的Unicode编码
- Ubuntu添加开机自动运行程序
- 【vue】ramda.js在vue中的使用
- 如何搭建IPv6测试你的APP
- 【大疆2021校招】【硬件B卷】笔试题
- 基于Linux实现的聊天室小程序
- nod-1089-最长回文子串 V2
- 2021世界人工智能大会开幕,百度飞桨荣获“SAIL之星”奖项
- Laravel使用Dingo API+JWT实现认证机制 无痛刷新Token
- Grain Identity
- 互联网老炮儿谈用户,怎一个精字了得
- unity3D实现录音功能,并将真实录音时长保存至本地(不能用可私信,附可执行文件下载地址)