IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)错误解决办法

这篇具有很好参考价值的文章主要介绍了IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)错误解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用pytorch交叉熵损失函数loss = nn.CrossEntropyLos(v, targets)时发现报错

IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)。

排查后发现模型预测值V在训练阶段最后一个step时,tensor维度从二维变成一维,导致出错。

例:训练集个数81,bs设置为4时,最后一个step 只剩1张图片。最后step时tensor维度从二维变成一维。

于是添加以下判断语句解决问题。如果有其他方法,可以交流一下。

1.

 v = net(inputs)
 if len(v.shape)==1:  #方式出现训练最后一个step时,出现v是一维的情况
     v=torch.unsqueeze(v,0)  
 loss = loss_func(v, targets)

2.可以在DataLoader中drop_last参数设置False文章来源地址https://www.toymoban.com/news/detail-690734.html

到了这里,关于IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)错误解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 中IndexError: list assignment index out of range 错误解决

    在 Python 中,当您尝试访问甚至不存在的列表的索引时,会引发 IndexError: list assignment index out of range 。 索引是可迭代对象(如字符串、列表或数组)中值的位置。 在本文中,我们将学习如何修复 Python 中的 Index Error list assignment index out-of-range 错误。 让我们看一个错误的例子来

    2024年02月06日
    浏览(60)
  • labelImg无法保存classes文件的解决方法(IndexError: list index out of range)

    憨憨程序员,其实是有做读取旧classes保存到新classes功能的,但是看完代码发现就启动程序初始化的时候调用了一次,change save dir的时候根本没有调用。 我实力有限,只能靠比较愚蠢的方法解决了。 首先找到我们安装labelImg的地址,比如我就是放到conda环境里面,所以在这个

    2024年04月24日
    浏览(41)
  • 关于Pyinstaller在打包Streamlit程序时遇到的IndexError:tuple index out of range

    如题,在使用Pyinstaller库打包过程中,如果遇到 IndexError:tuple index out of range ,不必惊慌,本质上是库函数在传参过程中出现异常 下面是解决方案: 找到 ..envssteamlitlibdis.py 这个文件。 如果你是用的虚拟环境,比如conda,那这个文件位于anaconda的安装目录 \\\"E:SOFTWAREANACONDAenv

    2024年03月11日
    浏览(53)
  • VUE中eslint报错: Expected linebreaks to be ‘LF‘ but found ‘CRLF

    出现这个的原因 :windows 环境下, git 在我们 pull 代码的时候,会自动识别当前的系统环境。将原本的(linux/unix)换行改成对应系统的,在我们提交代码的时候又会转成远程系统环境的(Linux/unix),然后又装了 eslint,默认就是使用 LF,所以就会报这个错误 各种环境下换行符格

    2023年04月08日
    浏览(47)
  • RuntimeError: stack expects each tensor to be equal size, but got at entry

    参考链接:​​​​​​解决Pytorch dataloader时报错每个tensor维度不一样的问题_python_脚本之家 记录一下自己遇到的bug: 问题描述:  问题分析: torch.stack(batch, 0, out=out)出错,原因可能是: 同一个batch的数据图片的维度(H, W, C)要相同(可以见官方文档:其shape必须一致) 问

    2024年02月15日
    浏览(52)
  • Expected one result (or null) to be returned by selectOne(), but found: 3报错解决方案

    Expected one result (or null) to be returned by selectOne(), but found: 3 Expected one result (or null) to be returned by selectOne(), but found: 3 意思是“期望selectOne()返回一个结果(或null),但发现3个”这说明你的返回结果有三个对象,但是selectOne只能返回一个。 第一种方案:可以把selectOne更换为selectList,

    2023年04月13日
    浏览(42)
  • DataLoader问题解决:RuntimeError: stack expects each tensor to be equal size, but got [3, 200, 200]entry1

            最近,在数据集处理并载入DataLoader进行训练的时候出现了问题:         我看了一下,大意就是维度也就是通道数不匹配,所以我觉得应该是数据集图片出现了问题。以下是我的普通数据集处理代码:           我一张一张图片放入DataLoader,然后按顺序一张一张的

    2023年04月25日
    浏览(43)
  • Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found

    Docker配置Elasticsearch启动报错 docker ps -a         #查看所有容器启动状态  发现elasticsearch的启动status为exited docker logs elasticsearch 配置elasticsearch.yml文件时http.host:与0.0.0.0的中间要有空格

    2024年02月11日
    浏览(53)
  • only batches of spatial targets supported (3D tensors) but got targets of dimension

    问题产生的原因是使用nn.CrossEntropyLoss()来计算损失的时候,target的维度超过4 如实target中的C不是1,则可以:  可以看到代码里面有个.long(),如果不用的话则会报错: RuntimeError: expected scalar type Long but found Float

    2024年02月11日
    浏览(37)
  • 已解决IndexError: positional indexers are out-of-bounds

    已解决IndexError: positional indexers are out-of-bounds 粉丝群里面的一个小伙伴遇到问题跑来私信我,想用pandas,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包