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相关推荐

  1. torch中的copy()和clone()

    torch中的copy()和clone() 1.torch中的copy()和clone() y = torch.Tensor(2,2):copy(x) --- 1 修改y并不改变原来的x y = x: ...

  2. torch中的topk()函数

    torch中的topk()函数 In [2]: import torchIn [3]: a=torch.randn((4,6))In [4]: a Out

  3. einops包中的rearrange,reduce, repeat及einops.layers.torch中的Rearrange,Reduce。对高维数据的处理方式

    from einops import rearrange, reduce, repeat from einops.layers.torch import Rearrange, Reduce 一.rea ...

  4. (原)torch中微调某层参数

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6221664.html 参考网址: https://github.com/torch/nn/issues ...

  5. c++11中thread join和detach的区别

    线程状态: 在一个线程的生存期内,可以在多种状态之间转换,不同的操作系统可以实现不同的线程模型,定义许多不同的线程状态,每个状态还可以包含多个子状态,但大体来说,如下几种状态是通用的: 1)就绪:参与 ...

  6. 【转】在无人值守程序(服务)中调用Microsoft Graph

    什么是无人值守程序(服务) 我在此前用了几篇文章分别介绍了在桌面应用程序(控制台),Web应用程序(ASP.NET MVC),以及PowerSehll脚本中如何访问Microsoft Graph,今天 ...

  7. torch中Dataset的构造与解读

    torch中Dataset的构造与解读 Dataset的构造 要自定义自己的数据集,首先需要继承Dataset(torch.utils.data.Dataset)类. 继承Dataset类之后,必须重 ...

  8. torch中乘法整理,*torch.mul()torch.mv()torch.mm()torch.dot()@torch.mutmal()

    目录 *位置乘 torch.mul():数乘 torch.mv():矩阵向量乘法 torch.mm() 矩阵乘法 torch.dot() 点乘积 @操作 torch.matmul() *位置乘 符号* ...

  9. torch中的inplace操作问题解决方法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 torch中的inplace操作问题解决方法 一.inplace操作是什么? 典型的inplace操作有哪些? 二.出错案例 总结 例 ...

  10. torch中的expand和repeat

    在torch中,如果要改变某一个tensor的维度,可以利用view.expand.repeat.transpose和permute等方法,这里对这些方法的一些容易混淆的地方做个总结. expand和 ...

最新文章

  1. Zip Slip目录遍历漏洞已影响多个Java项目
  2. 如何做自己的服务监控?spring boot 2.x服务监控揭秘
  3. OCP大会 | 腾讯云Open DCN Networking(附PDF)
  4. 免费流量监控软件,最大可同时监控1000台电脑
  5. 自定义vue中的验证码组件
  6. 设计师常用网页小图标大全
  7. WebSphere性能调优
  8. 基于IS-LM模型的宏观经济政策成效分析:弹性视角
  9. A-priori算法的优化实现
  10. 你小子代码写成这样,老夫也无可奈何
  11. 用SDK包开发K66FX18学习笔记(1)
  12. UPC 2020年夏混合个人训练第八十一场
  13. 7.Markdown图片
  14. 如何在 Linux 中创建并运行 Shell 脚本(Bash 初学者教程)
  15. 一些android论坛
  16. element-ui的el-menu横向菜单栏中去掉下划线
  17. 【示例】《Java程序设计》第二周博文:第二周 计算圆面积
  18. 蓝牙芯片支持音频传输,播放U盘TF卡,还能传输数据透传串口控制
  19. mysql数据库 排序中文字段_MySQL对中文进行排序的实例
  20. CSS基础(样式声明、引用(行内样式、内部样式、外部样式、导入样式)、样式优先级)

热门文章

  1. word 中的背景图片(浮动图形)怎么批量删除
  2. 赛门铁克完成收购Blue Coat 重塑未来网络安全
  3. 用计算机弹国王与乞丐,国王与乞丐 MIDI File Download :: MidiShow
  4. [转]30个总结JVM虚拟机的技术文排版好(收藏版)
  5. netty原理之蔚蓝天空
  6. 购物商城网站建设费用到底贵不贵?
  7. “无人区”行驶8年,李诞的脱口秀路在何方?
  8. 计算机专业必须用英语口语要求,哪些专业需要英语口语考试
  9. Wireshark 基础 | 简介篇
  10. CATIA常用的26个小技巧