躺平摸鱼。。。 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 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起