【问题记录1: “IndexError: index 13 is out of bounds for axis 1 with size 13“】

在PyTorch训练过程中遇到'IndexError: index 13 is out of bounds for axis 1 with size 13'的问题。原因是数据集类别不平衡,增大batch size至256暂时解决问题,但并未根本解决。最终解决方案是处理类别标签,对one-hot编码后的标签进行调整,并用try-except处理因类别不均衡导致的ROC AUC score错误。
摘要由CSDN通过智能技术生成

问题记录1: “IndexError: index 13 is out of bounds for axis 1 with size 13“

问题排查过程

  1. 首先检查类别数目的设置,类别数目为14,类别数目设置为14,因此index应该可以达到13,排除此问题。

  2. 通过打印出具体类别的标签发现,一个batch的样本缺少9这个标签,所以总共类别数只有13个,所以无法索引到13。
    请添加图片描述

原因:数据集类别不平衡,类别9的样本数比较少,一个batch中没有随机采样到类别9。

解决方法:增加batch size为256(原来为128)。

效果:问题解决。附带效果,训练的准确度竟然也有所上升(97提升到98)。开心:)

————————————————————————————————————————
后来发现,增加batch的情况并不能从根本上解决类别缺少的问题。

进一步解决:将类别标签后面增加与类别数目相同的一系列数,比如这里是14类,就加上[0,1,2,…,13],在后面的one-hot表示后,再去除后面14个数。

    label = np.array(label)
    # 加上14个数(以防有的类别在batch中没出现对后面预测产生影响)
    for i in range(NB_CLASSE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值