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( ...
最新文章
- mysql之 explain、optimizer_trace 执行计划
- 拓扑排序(字典序最小,字典序最小)
- UV认证应用安全标准的目的
- php 数值相加_php递归遍历多维数组,合并值并相加
- 腾讯京东内部大换血,高管“遭殃”,年轻人“欢呼”!
- loj 1063(求割点个数)
- 聊聊EurekaRibbonClientConfiguration
- 家用电冰箱3C认证检测标准
- SDCC和Keil之stc89c52资料(纪念51单片机40周年)
- 【noi.ac】#283. 唐时月夜
- python实现图像像素修改脚本
- 采购月度业绩贡献度报表
- SVPWM的一些理解
- Kafka 多话题消费者
- 【cadence 16.6】PSPICE如何添加SPICE模型
- 计算机教室条幅文字,教室标语14字
- 中国工程科学院计算机院士,冯夏庭 中国工程院院士
- ai怎么让图片任意变形_今日带你认识AI“操纵变形命令工具”配色调整图形
- 三菱,FX3U,plc程序模板和触摸屏程序模板,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制
- mx linux安装方法,MX Linux 19.1 发布,基于Debian的出色的Linux发行版