torch中的retain graph、detach
1. retain graph
通常计算完backward之后会将计算图free掉以节省空间,但是如果需要做两次backwark,且有共用的graph时,需要先retain graph然后再进行backward。
Pytorch中retain_graph参数的作用 - Oldpan的个人博客前言 在pytorch神经网络迁移的官方教程中有这样一个损失层函数(具体看这里提供0.3.0版中文链接:https://oldpan.me/archives/pytorch-neural-transfer)。 class ContentLoss(nn.Module): def __init__(self, target, weight):……https://oldpan.me/archives/pytorch-retain_graph-work
2. detach
假设一个变量在graph中位置1时参与反向传播,需要更新权重;在位置2时不需要反向传播,只是当做一个常量来参与运算。此时,在位置2计算之前需要进行detach操作。
class ContentLoss(nn.Module):def __init__(self, target, weight):super(ContentLoss, self).__init__()self.target = target.detach() * weight# 因为这里只是需要target这个数值,这个数值是一种状态,不计入计算树中。# 这里单纯将其当做常量对待,因此用了detach则在backward中计算梯度时不对target之前所在的计 算图存在任何影响。self.weight = weightself.criterion = nn.MSELoss()
torch中的retain graph、detach相关推荐
- torch中的copy()和clone()
torch中的copy()和clone() 1.torch中的copy()和clone() y = torch.Tensor(2,2):copy(x) --- 1 修改y并不改变原来的x y = x: ...
- torch中的topk()函数
torch中的topk()函数 In [2]: import torchIn [3]: a=torch.randn((4,6))In [4]: a Out
- einops包中的rearrange,reduce, repeat及einops.layers.torch中的Rearrange,Reduce。对高维数据的处理方式
from einops import rearrange, reduce, repeat from einops.layers.torch import Rearrange, Reduce 一.rea ...
- (原)torch中微调某层参数
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6221664.html 参考网址: https://github.com/torch/nn/issues ...
- c++11中thread join和detach的区别
线程状态: 在一个线程的生存期内,可以在多种状态之间转换,不同的操作系统可以实现不同的线程模型,定义许多不同的线程状态,每个状态还可以包含多个子状态,但大体来说,如下几种状态是通用的: 1)就绪:参与 ...
- 【转】在无人值守程序(服务)中调用Microsoft Graph
什么是无人值守程序(服务) 我在此前用了几篇文章分别介绍了在桌面应用程序(控制台),Web应用程序(ASP.NET MVC),以及PowerSehll脚本中如何访问Microsoft Graph,今天 ...
- torch中Dataset的构造与解读
torch中Dataset的构造与解读 Dataset的构造 要自定义自己的数据集,首先需要继承Dataset(torch.utils.data.Dataset)类. 继承Dataset类之后,必须重 ...
- torch中乘法整理,*torch.mul()torch.mv()torch.mm()torch.dot()@torch.mutmal()
目录 *位置乘 torch.mul():数乘 torch.mv():矩阵向量乘法 torch.mm() 矩阵乘法 torch.dot() 点乘积 @操作 torch.matmul() *位置乘 符号* ...
- torch中的inplace操作问题解决方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 torch中的inplace操作问题解决方法 一.inplace操作是什么? 典型的inplace操作有哪些? 二.出错案例 总结 例 ...
- torch中的expand和repeat
在torch中,如果要改变某一个tensor的维度,可以利用view.expand.repeat.transpose和permute等方法,这里对这些方法的一些容易混淆的地方做个总结. expand和 ...
最新文章
- Zip Slip目录遍历漏洞已影响多个Java项目
- 如何做自己的服务监控?spring boot 2.x服务监控揭秘
- OCP大会 | 腾讯云Open DCN Networking(附PDF)
- 免费流量监控软件,最大可同时监控1000台电脑
- 自定义vue中的验证码组件
- 设计师常用网页小图标大全
- WebSphere性能调优
- 基于IS-LM模型的宏观经济政策成效分析:弹性视角
- A-priori算法的优化实现
- 你小子代码写成这样,老夫也无可奈何
- 用SDK包开发K66FX18学习笔记(1)
- UPC 2020年夏混合个人训练第八十一场
- 7.Markdown图片
- 如何在 Linux 中创建并运行 Shell 脚本(Bash 初学者教程)
- 一些android论坛
- element-ui的el-menu横向菜单栏中去掉下划线
- 【示例】《Java程序设计》第二周博文:第二周 计算圆面积
- 蓝牙芯片支持音频传输,播放U盘TF卡,还能传输数据透传串口控制
- mysql数据库 排序中文字段_MySQL对中文进行排序的实例
- CSS基础(样式声明、引用(行内样式、内部样式、外部样式、导入样式)、样式优先级)
热门文章
- word 中的背景图片(浮动图形)怎么批量删除
- 赛门铁克完成收购Blue Coat 重塑未来网络安全
- 用计算机弹国王与乞丐,国王与乞丐 MIDI File Download :: MidiShow
- [转]30个总结JVM虚拟机的技术文排版好(收藏版)
- netty原理之蔚蓝天空
- 购物商城网站建设费用到底贵不贵?
- “无人区”行驶8年,李诞的脱口秀路在何方?
- 计算机专业必须用英语口语要求,哪些专业需要英语口语考试
- Wireshark 基础 | 简介篇
- CATIA常用的26个小技巧