躺平摸鱼。。。 2022-08-02 14:58 采纳率: 100%
浏览 16
已结题

IndexError

问题遇到的现象和发生背景

IndexError: index 120 is out of bounds for axis 1 with size 120

问题相关代码,请勿粘贴截图

IndexError: index 120 is out of bounds for axis 1 with size 120

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • 小P聊技术 2022-08-02 16:11
    关注

    在用karas做分类的时候,本来是10分类任务,https://so.csdn.net/so/search?q=%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86&spm=1001.2101.3001.7020之后有一类只有一个数据,所以把这类跟相近的合并了,num_classes改成了9,结果出现了错误。

    label = np.array(https://so.csdn.net/so/search?q=keras&spm=1001.2101.3001.7020.utils.to_categorical(label, num_classes))
    File “/root/anaconda3/envs/lvyy/lib/python3.6/site-packages/keras/utils/np_utils.py”, line 29, in to_categorical
    categorical[np.arange(n), y] = 1
    IndexError: index 9 is out of bounds for https://so.csdn.net/so/search?q=axis&spm=1001.2101.3001.7020 1 with size 9

    原先

    label = [0,1,2,3,4,5,6,7,8,9]
    num_classes = 10
    

    合并数据以后

    label = [0,1,2,4,5,6,7,8,9]
    #第三类合并了
    num_classes = 9
    

    出现了上述错误。

    查了一下karas的库,num_classes代表的是类别数。但是它默认类别数是从0类到最大类。

    举例

    eg1:我们初始的label = [0,1,2,3,4,5,6,7,8,9],所以库函数会默认类别数为10类:从0类算起,到最大类9类,一共是10类。这时我们设置num_classes = 10,索引不会出现问题。

    eg2:当我们合并第3类时,label = [0,1,2,4,5,6,7,8,9],库函数仍然会默认类别数为10类:从0类算起,到最大类9类,仍然一共是10类。此时设置num_classes = 9,在索引时就会出现超出范围。

    eg3:若我们类别从1类开始,既label = [1,2,3,4,5,6,7,8,9],库函数还是会默认为10类,此时若num_classes = 9则会报错。应改为num_classes = 10。

    了解了报错的原因,解决办法就很好理解了。

    方案1

    直接将类别号设置为最大类别号+1。

    label = [0,1,2,4,5,6,7,8,9]
    #第三类合并了
    num_classes = 10
    

    方案2

    修改后续类别号,使得最大类别号为8。

    label = [0,1,2,3,4,5,6,7,8]
    #第三类合并了,并修改后续类别号
    num_classes = 9
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 python点云生成mesh精度不够怎么办
  • ¥15 QT C++ 鼠标键盘通信
  • ¥15 改进Yolov8时添加的注意力模块在task.py里检测不到
  • ¥50 高维数据处理方法求指导
  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器