RuntimeError range.second - range.first == t.size() INTERNAL ASSERT FAILED at .XXXX
发布日期:2021-07-01 03:06:27 浏览次数:2 分类:技术文章

本文共 766 字,大约阅读时间需要 2 分钟。

今天跑网络的时候遇见了这么一个错误:

Exception has occurred: RuntimeError

range.second - range.first == t.size() INTERNAL ASSERT FAILED at .XXXX , please report a bug to PyTorch. inconsistent range for TensorList output (copy_range at .XXX)

在百度和bing找了半天没找到相关解释,最后还是google给力,丢一个解决问题的

其实主要原因还是在于网络里出现了利用tensor 作为下标索引,但是并没有将其计算梯度的属性置为False,比如如下例子

import torcht1 = torch.tensor([[1, 2], [3,4]]).float().requires_grad_()t2 = torch.argmin(t1, dim=1)t3 = t1[t2]t3.sum().backward()

t2也是一个tensor,但是t3是获取t1中以t2为下标的数据,这里的t2显然不需要计算梯度嘛,但是你必须得告诉torch,这里不要算,否则这个憨憨就会去算,并且还会报个让人摸不着头脑的错= =

解决方法当然也很简单,将上述代码修改为

import torcht1 = torch.tensor([[1, 2], [3,4]]).float().requires_grad_()t2 = torch.argmin(t1, dim=1)t3 = t1[t2.detach()]t3.sum().backward()

其实就是t2 修改为了  t2.detach(),阻断了梯度的传播,就不用再计算出错啦~ヾ(*´▽‘*)ノ

转载地址:https://meteorrain.blog.csdn.net/article/details/112317214 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:one of the variables needed for gradient computation has been modified by an inplace operation:
下一篇:关于nn.embedding的维度的定义,函数的理解,一些需要注意的点

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月18日 03时22分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Scala学习第十一天 Scala中的apply实战详解 2019-05-03
Scala学习第七天 Scala类的属性和对象私有字段实战详解 2019-05-03
Scala学习第六天 Map、Tuple、Zip实战解析 2019-05-03
Scala学习第四天 Scala的For与Function进阶实战、Lazy的使用 2019-05-03
Scala学习第三天 Tuple、Array、May与文件操作入门实战 2019-05-03
Scala学习第二天 Scala函数定义、流程控制、异常处理 2019-05-03
Scala学习第五天 Scala数组操作实战详解 2019-05-03
基于key-value的存储系统Redis 2019-05-03
Scala学习第十二天 Scala中的继承:超类的构造、重写字段、重写方法代码实战 2019-05-03
Scala学习第十三天 抽象类、抽象字段、抽象方法 2019-05-03
Scala学习第十四天 Scala中作为接口的trait、在对象中混入trait代码实战 2019-05-03
Scala学习第十五天 Scala多重继承、多重继承构造器执行顺序及AOP实现 2019-05-03
Scala学习第十六天 包的定义、包对象、包的引用、包的隐式引用代码实战 2019-05-03
Scala学习第十七天 包、类、对象、成员、伴生类、伴生对象访问权限实战彻底详解 2019-05-03
Scala学习第十八天 文件的读取、写入、控制台输入操作代码实战 2019-05-03
Scala学习第十九天 正则表达式、与模式匹配结合的的Reg代码实战 2019-05-03
剑指offer:栈的压入、弹出序列(java) 2019-05-03
剑指offer:往上到下打印二叉树(java) 2019-05-03
剑指offer:二叉搜索树的后序遍历序列(java) 2019-05-03
剑指offer:二叉树中和为某一值的所有路径(java) 2019-05-03