举个例子

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>)

请注意:

  1. 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替换掉部分值相关推荐

  1. 如何把PDF中的一页内容替换掉

    在工作中我们常常会用到PDF文档,有时其中一页的内容不合适,如果删除重新编写会比较费时,是否可以直接用其他文档的一页直接替换掉呢? 对于PDF的相关修改我们需要用到PDF编辑器.首先运行极速PDF编辑 ...

  2. 如何将网页下载的文档中的手动换行符替换掉

    在现实工作当中,经常会遇到下载的文档多一些特殊的符号,如下图: 首先为了更好的展现,需要先做如下设置, 这样文章中的所有标记都会显示出来 这实际是由于不同的存在形式引起的,如果对文档不进行合理的格式转 ...

  3. 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)

    在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值) 参考文章: (1)在Android中自定义捕获Application全局异常,可以 ...

  4. php替换视频教程,替换掉视频运动中的文字 | 修改视频文字的内容(附带软件与详细教程)...

    对于广告视频宣传,不知狸友们曾经是否有过这样的想法,利用借势营销的手段,将某段热门的视频影视片段修改成广告的内容,以达到热点广告的目的.在这个互联网比较发达的时代,广告形式各式各样,唯有创新或者比较突 ...

  5. SQL语句批量去除、替换掉某列(字段)中包含的某个字符串

    原文链接: SQL语句批量去除.替换掉某列(字段)中包含的某个字符串,一并总结下列的增删改操作_Java Punk的博客-CSDN博客_sql删除包含某种字所有信息 以MySQL为例: 以下案例假设 ...

  6. 编译器中,光标变宽,输入字符会替换掉原字符

    遇到情形:编译器中,光标变宽,输入字符会替换掉原字符 如上图所示,在Qt或者QNX中遇到这种情形,光标变宽,输入b会替换后面的字符a 原因: 不小心按了insert键 再按下insert键就好了.

  7. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  8. 对Word文档中的指定内容进行替换

    不知大家在对Word操作时,有没有遇到需要对指定内容进行替换这种需求.前几天公司有个需求,就是对PDF邀请函的姓名那部分内容进行替换,因为本人以前对Word的书签有过操作,所以思路就是通过将这部分内容 ...

  9. js替换html中的字符串,js怎么替换字符串?

    在js中,可以使用str.replace()方法来替换字符串.replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串:然后返回一个新的字符串. replace( ...

最新文章

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

热门文章

  1. 无线网络突然连不上了
  2. pycharm 最上面的快速定位标签_受用一生的高效 PyCharm 使用技巧(四)
  3. Dubbo的多种序列化算法
  4. 物联网已经发展多年,为什么一直不温不火
  5. 最优化方法(Optimization methods)中的Modularity
  6. 小学生html教程,小学.html
  7. MapReduce之Map join操作
  8. 史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」
  9. 夜神模拟器——最好用的安卓模拟器
  10. 最新亲测仿悬赏猫牛帮任务平台源码完美运营+支持封装APP