Pytorch的骚操作
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的骚操作相关推荐
- 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作
使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作 总共分为四步 构造一个my_dataset类,继承自torch.utils.data.Dataset 重写__getite ...
- 骚操作!有了这款神器,轻轻松松用Python写APP!(文末彩蛋)
本文转自机器之心 作者:Adrien Treuille 机器之心编译 参与:魔王.一鸣 机器学习开发者想要打造一款 App 有多难?事实上,你只需要会 Python 代码就可以了,剩下的工作都可以交 ...
- 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...
他来了,他来了,这又是什么骚操作??昨天,五只创新未来18个月封闭运作混合型证券投资基金发布联合声明,会为这个战略配售基金安排一个月的退出选择期. 5只创新未来18个月封闭运作混合型证券投资基金发布联 ...
- GitHub 骚操作,个人页还能这么玩?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 之前写过一篇 GitHub 骚操作的文章 GitHub 竟 ...
- 杀疯了!通过游戏“元宇宙”,Deepmind让AI学会玩各种没玩过的游戏,骚操作不断...
来源:大数据文摘本文约1800字,建议阅读7分钟 面对任务一看就会的AI,离我们心里的通用人工智能还有多远呢? 对于AI来说,完成一个单一任务或许相对简单,但是涉及到合作和博弈时,AI往往显得有些愚蠢 ...
- K项目的一些心得之全球模板里的几个骚操作
K项目的一些心得之全球模板里的几个骚操作 1,数据迁移阶段,物料主数据分类视图里,batch class的代码跟物料号相同. 这意味着如果需要迁移的物料有1万个,导入程序会自动创建1万023类型的分类 ...
- git idea 可视化_那些你应该知道的,但是你一定不知道的 Git 骚操作
Hello 大家好,作为团队中的主程阿粉经常参与很多核心功能的开发,而且很多时候一个需求没做好中间又插入新的紧急的需求或者 bug 修复,每次遇到这种情况,如果两个地方代码不冲突的话还好,可以直接在本 ...
- 笔记合并_.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)学习笔记(上)...
23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...
- RabbitMQ 的这些骚操作你知道吗?
RabbitMQ的Java客户端统一使用com.rabbitmq.client作为顶级包名.其中,最核心的类主要有:ConnectionFactory.Connection.Channel.Consu ...
最新文章
- 从“兔子狮子谁做老板”的故事,看企业管理
- (四) prometheus + grafana + alertmanager 配置Kafka监控
- CCF 202104 Python
- 在汇编程序中调用C函数
- 【Python】25个好用到爆的一行Python代码,建议收藏
- linux 关闭防火墙firewall,centos中关闭防火墙(firewall)及SELinux
- 用set和shopt设置bash选项
- html文件内容搜索,html读出文本文件内容
- DenseNet——CNN经典网络模型详解(pytorch实现)
- 我是 LinkedIn 的 SRE ,我把 LinkedIn 搞挂了
- java课堂作业(四)
- 电脑连接Wifi,只能上QQ不能上网。关键字:无Internet访问权限。
- ccf csp 题目:工资计算
- win7系统配置ntp服务器,技术员教你解决win7系统NTP时间服务器设置的设置方法
- 防摸鱼小软件——鼠标键盘检测器
- zookeeper的重连思考
- 海外 网易云音乐无法正常使用 极简
- 网页中使用CSS样式表的五种方法
- Chained Declustering
- 组合数学拉丁方是什么
热门文章
- 后羿采集器怎么导出数据_后羿采集器如何采集历史天气数据这类直接就是表格的数据?...
- java毕业设计线上甜品店售卖系统Mybatis+系统+数据库+调试部署
- 深入理解Java虚拟机(四)Eden、Survivor、老年代、GC日志
- 计算机术语tops,第十七课计算机辅助包装系统TOPSPro简介TOPSPro包装优化软件.DOC...
- 色卡矩形检测和颜色提取
- wow mysql dbc_DBC表含义
- Eclipse运行报错:HTTP Status 500 - javax.servlet.ServletException: java.lang.UnsupportedClassVersionError
- 我是如何拿到小米、京东、字节等大厂前端offer的
- iOS开发-使用OC搭建自己的Socket 包括服务端和客服端
- matlab车牌识别错误,求解决Matlab车牌识别