1. Pytorch的detach()、detach_()

detach():
返回一个新的 从当前图中分离的 Variable。
返回的 Variable 永远不会需要梯度
如果 被 detach 的Variable volatile=True, 那么 detach 出来的 volatile 也为 True
还有一个注意事项,即:返回的 Variable 和 被 detach 的Variable 指向同一个 tensor

import torch
from torch.nn import init
from torch.autograd import Variable
t1 = torch.FloatTensor([1., 2.])
v1 = Variable(t1)
t2 = torch.FloatTensor([2., 3.])
v2 = Variable(t2)
v3 = v1 + v2
v3_detached = v3.detach()
v3_detached.data.add_(t1) # 修改了 v3_detached Variable中 tensor 的值
print(v3, v3_detached)    # v3 中tensor 的值也会改变

detach_():
将 Variable 从创建它的 graph 中分离,把它作为叶子节点
(1)将Variable的grad_fn 设置成None,在BP的时候,到这个Variable就找不到它的grad_fn,所以就不会再往后BP了
(2)将requires_grad设置为False。需要计算梯度的话手动设置requies_grad=True

用处:

假设有2个网络A,B,两个关系是这样的y=A(x),z =B(y)现在想用z.backward()来为B网络的参数来求梯度,但是又不想求A网络的梯度:

第一种方法:
y = A(x)
z = B(y.detach())
z.backward()
第二种方法:
y = A(x)
y.detach_()
z = B(y)
z.backward()

ps:个人感觉像Python的深copy、浅copy,顺着写一下Python的深浅copy

Python的复制、深copy、浅copy

(1)python的直接赋值默认是浅copy,只是传递对象的引用,原始列表改变,子对象也会改变
(2)深copy,包含对象里面的子对象的copy,原对象的改变不会造成深copy里任何子元素的改变

Pytorch的骚操作相关推荐

  1. 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作

    使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作 总共分为四步 构造一个my_dataset类,继承自torch.utils.data.Dataset 重写__getite ...

  2. 骚操作!有了这款神器,轻轻松松用Python写APP!(文末彩蛋)

    本文转自机器之心  作者:Adrien Treuille 机器之心编译 参与:魔王.一鸣 机器学习开发者想要打造一款 App 有多难?事实上,你只需要会 Python 代码就可以了,剩下的工作都可以交 ...

  3. 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...

    他来了,他来了,这又是什么骚操作??昨天,五只创新未来18个月封闭运作混合型证券投资基金发布联合声明,会为这个战略配售基金安排一个月的退出选择期. 5只创新未来18个月封闭运作混合型证券投资基金发布联 ...

  4. GitHub 骚操作,个人页还能这么玩?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 之前写过一篇 GitHub 骚操作的文章 GitHub 竟 ...

  5. 杀疯了!通过游戏“元宇宙”,Deepmind让AI学会玩各种没玩过的游戏,骚操作不断...

    来源:大数据文摘本文约1800字,建议阅读7分钟 面对任务一看就会的AI,离我们心里的通用人工智能还有多远呢? 对于AI来说,完成一个单一任务或许相对简单,但是涉及到合作和博弈时,AI往往显得有些愚蠢 ...

  6. K项目的一些心得之全球模板里的几个骚操作

    K项目的一些心得之全球模板里的几个骚操作 1,数据迁移阶段,物料主数据分类视图里,batch class的代码跟物料号相同. 这意味着如果需要迁移的物料有1万个,导入程序会自动创建1万023类型的分类 ...

  7. git idea 可视化_那些你应该知道的,但是你一定不知道的 Git 骚操作

    Hello 大家好,作为团队中的主程阿粉经常参与很多核心功能的开发,而且很多时候一个需求没做好中间又插入新的紧急的需求或者 bug 修复,每次遇到这种情况,如果两个地方代码不冲突的话还好,可以直接在本 ...

  8. 笔记合并_.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)学习笔记(上)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...

  9. RabbitMQ 的这些骚操作你知道吗?

    RabbitMQ的Java客户端统一使用com.rabbitmq.client作为顶级包名.其中,最核心的类主要有:ConnectionFactory.Connection.Channel.Consu ...

最新文章

  1. 从“兔子狮子谁做老板”的故事,看企业管理
  2. (四) prometheus + grafana + alertmanager 配置Kafka监控
  3. CCF 202104 Python
  4. 在汇编程序中调用C函数
  5. 【Python】25个好用到爆的一行Python代码,建议收藏
  6. linux 关闭防火墙firewall,centos中关闭防火墙(firewall)及SELinux
  7. 用set和shopt设置bash选项
  8. html文件内容搜索,html读出文本文件内容
  9. DenseNet——CNN经典网络模型详解(pytorch实现)
  10. 我是 LinkedIn 的 SRE ,我把 LinkedIn 搞挂了
  11. java课堂作业(四)
  12. 电脑连接Wifi,只能上QQ不能上网。关键字:无Internet访问权限。
  13. ccf csp 题目:工资计算
  14. win7系统配置ntp服务器,技术员教你解决win7系统NTP时间服务器设置的设置方法
  15. 防摸鱼小软件——鼠标键盘检测器
  16. zookeeper的重连思考
  17. 海外 网易云音乐无法正常使用 极简
  18. 网页中使用CSS样式表的五种方法
  19. Chained Declustering
  20. 组合数学拉丁方是什么

热门文章

  1. 后羿采集器怎么导出数据_后羿采集器如何采集历史天气数据这类直接就是表格的数据?...
  2. java毕业设计线上甜品店售卖系统Mybatis+系统+数据库+调试部署
  3. 深入理解Java虚拟机(四)Eden、Survivor、老年代、GC日志
  4. 计算机术语tops,第十七课计算机辅助包装系统TOPSPro简介TOPSPro包装优化软件.DOC...
  5. 色卡矩形检测和颜色提取
  6. wow mysql dbc_DBC表含义
  7. Eclipse运行报错:HTTP Status 500 - javax.servlet.ServletException: java.lang.UnsupportedClassVersionError
  8. 我是如何拿到小米、京东、字节等大厂前端offer的
  9. iOS开发-使用OC搭建自己的Socket 包括服务端和客服端
  10. matlab车牌识别错误,求解决Matlab车牌识别