Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)

2024-09-08 09:32

本文主要是介绍Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」

##一、 缘由及解决方法
把这个pytorch-ddpg|github搬到jupyter notebook上运行时,出现错误Nn criterions don’t compute the gradient w.r.t. targets error。注:我用的评价准则函数为nn.MSELoss(evalute, target)。所以给出的错误提示是:在该准则函数不计算目标值(期望值,也称为target , label)的梯度。这说明,当前的程序中target的tensor Variable的属性requires_grad=True(可以打印出来验证一下)。

问题解决方法:将target的requires_grad属性变为False,也即不需要求梯度。此处不能直接requires_grad=False。正确的做法是在criterions(evalute, target)之前调用target.detach()target.detach_()函数。这样程序就不会出现这个错误了。

解释:在我遇到问题的程序中,target值是由要更新参数的网络前向计算出来的(例如,Q-learning里的Q值的更新),而不是普通的给定的label(例如,有监督学习的标签值)。此时的target是tensor的Variable,属性requires_grad=True,也即由计算图输出的变量都是需要求梯度的。我们利用detach_()或detach()函数是将target从整个计算图中分离出来。从而使target的属性恢复requires_grad=False。

二、下而是我遇到错误的代码,以及更正,大家可以参考。

  • 定位pytorch-ddpg|github,定位到图中红色框中的文件,点击进入该文件页。

这里写图片描述

  • 继续定位如图,图中绿色框中的代码应改为绿色字体的代码。运行程序就没这个错误了。

注:也可以在注释#critic update的上一行添加 target_q_value.detach_()来达到将target从计算图中分离出来的目的,同样能解决问题。
这里写图片描述

三、完整的debug过程

  • 1 运行pytorch-ddpg|github的程序,出现这个错误。

  • 2 两大搜索引擎,各种搜。发现遇到这个问题的人也不少,我根据问题下面的回答一个个偿试,例如将requires_grad=False等 ,发现不能这么硬来,并且会出现另一个错误如下(此时解决方法其实已经在错误中给出来了,但是我愣是没仔细看,还是现在整理时发现的,所以jump to 3):
    这里写图片描述

  • 3 因为这个例子是在更新类似Q-learning的Q值函数时出现的,突然记起pytorch经典的例程中就是DQN|pytorch例程。我运行这个程序没有出现任何错误,于是我将pytorch-ddpg|github中的有关部分改成与DQN|pytorch例程一样。但是,发现还是有问题,我仔细查看,发现还是有一点点不一样的。下图中,红框是DQN对应的target,发现后面跟了一个不知道有什么作用的函数。于是我又搜索,找到介绍这个函数的一个博客pytorch: Variable detach 与 detach_|CSDN博客,然后就明白问题的原因了(第一部分的解释已经给出原因)。

这里写图片描述

##四、 总结
虽然,绕了一步,但是结局是好的——问题解决了。pytorch-ddpg|github是利用DDPG来训练倒立摆,连续的动作,连续的时间。解决错误后,程序就很正常的运行,结果贴一下:

  • 刚开始的训练情况
    这里写图片描述

  • 1000步的训练情况
    这里写图片描述

最后,希望大家不会有找这个错误解决方法的机会。

补充:此篇遇到pytorch中关键的两个属性:Variable.requries_grad, Variable.volatile,以及两个函数Variable.detach()Variable.detach_()

这篇关于Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147735

相关文章

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识