有关于torch.autograd.grad

news2024/11/18 15:28:00

torch.autograd模块给用户提供了一个自定义求导的接口。torch.autograd.grad可以手动地将loss对某部分参数进行梯度求导,特别适用于debug和观测。

笔者经常使用这个接口用于观测模型优化出现问题时,梯度值是否出现异常;以及用于代替tensorboard等可视化工具,快速理解复杂的计算图

比方说下面这段代码:

t2 = torch.autograd.grad(adv_loss,next(self.dis.parameters()),retain_graph=True)
t3 = torch.autograd.grad(adv_loss,next(self.gen.parameters()),retain_graph=True)
t1 = torch.autograd.grad(adv_loss,target,retain_graph=True)

用于观测,最终的loss是否由self.dis(model)、self.gen(model)、target(tensor)计算,进而用于判断哪些模型参与这个loss的优化。这个功能就类似于使用tensorboard可视化loss的计算过程,只不过这样更方便。

如果在autograd的时候出现如下错误:
在这里插入图片描述
“...appears to not have been used in the graph”就说明,这部分模型参数、变量,并没有参与到这个loss的计算中,自然loss.backward()的时候,这部分参数也不会被优化。


用这种技巧的时候,要注意两个参数:

  • allow_unused=False:默认False,意味着如果被求导参数不在计算图的话,会报错;如果设置为True,就算参数不在loss的计算图里,梯度也会被计算,而且必定为0。这里的话,必须设置为False,也就是如果参数不在计算图里,就会提示上述`“…appears to not have been used in the graph”的错误。

在这里插入图片描述

  • retain_graph=True:默认为False,也就是一旦求导一次之后,计算图就会被释放;这里的话如果要观测多次autograd的结果,就必须设置为True,把计算图保留。
    在这里插入图片描述

更多有关于torch.autograd.grad的细节,参见:
torch官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

检验基础的 JavaScript 面试题

1. 下面代码的输出是什么? function sayHi() {console.log(name);console.log(age);var name "Lydia";let age 21; }sayHi(); A: Lydia 和 undefined B: Lydia 和 ReferenceError C: ReferenceError 和 21 D: undefined 和 ReferenceError 答案: D…

12月编程语言排行榜公布!一起来看变化!

2022年迎来了最后一个月,我们可以看到,在这一年中编程语言起起伏伏,有的语言始终炙手可热,而有的语言却逐渐“没落”… 日前,全球知名TIOBE编程语言社区发布了12月编程语言排行榜,有哪些新变化&#xff1f…

一篇博客搞定深度学习基本概念与反向传播

目录 深度学习的发展过程 深度学习的步骤 定义Neural NetWork 全前向连接 softmax介绍 定义loss函数 定义优化器选择最优参数optimization 反向传播Backpropagation 深度学习介绍 反向传播视频 深度学习的发展过程 perceptron(liner model)感知机——线性模型 perc…

ESP32入门基础之资源管理

文章目录1 ESP32-DevKitC V4(ESP32-WROVER-E&IE)板载资源2 FreeRTOS任务内存使用监控1 ESP32-DevKitC V4(ESP32-WROVER-E&IE)板载资源 ESP32-DevKitC V4 入门指南 esp32-devkitc开发板参数对比 在工程中使用函数查询可用…

HTML学生个人网站作业设计:基于HTML+CSS+JavaScript设计多用途的图文展示博客HTML模板(16页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

IPv4/IPv6协议分析 实验报告

实验名称: IPv4/IPv6协议分析实验 一、实验预习 1、实验目的 利用抓包工具(Wireshark/Windump/Sniffer)抓取IPv4/IPv6分组,以进一步熟悉和理解IPv4/IPv6格式规范与IP协议的工作原理 2、实验内容…

HBase Windows 安装

一、写在前面 在安装HBase之前,我们需要先安装JDK和Hadoop,具体JDK和Hadoop的安装我前面已经做过了,需要的话,请看我的另一篇博客:Hadoop Windows 安装 还是那句话,在安装HBase之前,我们需要搞清…

IDEA 一些实用性的设置(Doing)

文章目录设置鼠标滑轮修改字体大小设置自动导包和删包功能设置显示代码行号和方法间的间隔符设置忽略大小写提示设置文件多行显示tabs设置默认字体、字体大小和行间距设置鼠标滑轮修改字体大小 file——setting(快捷键:CtrlAltS)——editor—…

ELK(搜索与分析技术栈)

一、介绍 ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下&#…

HTML学生个人网站作业设计成品 HTML+CSS肖战明星人物介绍网页 web结课作业的源码

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

并发与竞争(三)自旋锁

文章目录自旋锁的概念什么是自旋锁?自旋锁的API函数(一)自旋锁的使用步骤其他自旋锁API函数(二)自旋锁的注意事项内核中自旋锁的实例自旋锁死锁写代码临界区在哪?最简单的实现逻辑完整实现自旋锁的概念 什…

Python pip更新教程(两种方式)

1. 直接采用命令行模式更新 1.1 搜索框搜索cmd,然后以管理员模式打开 1.2 执行命令 python -m pip install --upgrade pip1.3 查看更新后的版本 pip --version注:如果更新失败,可能是因为网络的问题,则选择第二种更新方法。 2.…

零基础怎么入门python

本文由正厚软件陈老师提供 “编程零基础,可以学习Python吗?” 这是很多初学者经常问的一个问题,我的回答是可以!现在很多小学、初中也开始学习编程语言,选择的入门语言就是python。 python其实和学中文没什么区别&…

Windows 10关闭快速启动的方法

在Windows 8及其更高版本的Windows系统中,快速启动功能会被默认开启,开机时间也能大大缩短。但是在某些情况下,快速启动功能的开启会带来部分系统问题,从而无法正常使用电脑。那么我们该如何关闭快速启动呢? 快速启动的…

Redis06:Redis进阶部分

Redis进阶部分Redis配置文件详解Redis持久化持久化之RDB操作rdb优缺点Redis配置文件详解 Redis持久化 Redis是内存数据库,如果不将内存中的数据状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供…

taro3.3.12升级至3.5.8解决支付宝小程序启动基础库2.0构建报错---slot 的祖先节点中未找到 element

项目:taro3 vue3 taro版本:3.3.12 支付宝在上传版本时要求用基础库2.0编译,否则报错,启动2.0编译后, 会有如下错误: 解决方案:社区里面说是要升级taro >3.4.0 步骤1、查看taro版本 – …

bmp位图格式详细介绍-1/4/8/16/24/32bit、存储格式等

目录 一、概述 二、.bmp格式文件详解  2.1 位图文件头  2.2 位图信息头  2.3 调色板  2.4 位图数据 三、位图的其他知识  3.1 压缩的位图 一、概述 bmp是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,随…

FFplay音频滤镜分析

音频流的 滤镜是通过 configure_audio_filters() 函数来创建的,因为 ffplay 为了代码的通用性,即便命令行参数不使用滤镜,AVFrame 也会过一遍 空滤镜做下样子。 configure_audio_filters() 函数的流程图如下: configure_audio_fi…

HCIA OSI参考模型

一、前言 OSI七层模型是我们耳熟能详的,其实没有太多可以说的地方,我这里就按自己的理解做一下汇总。 二、OSI 七层模型 OSI七层模型是由“国际标准化组织”制定的“参考”模型。 1、物理层 实际上就是对网线、光纤等“连接”介质进行规定&#xff…

初学者必看的3D建模避坑技巧,高效3D制作

近来,随着3D技术的进步被认为任何对 3D 建模主题感兴趣的人打开了机会之门。现在,只要您拥有一台计算机和良好的空间分析技能,您就可以通过时间和持续练习来完善您的 3D 雕刻方式。 也就是说,该领域的许多初学者往往会犯建模错误&…