博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【问题记录】raise IndexError(‘index {} is out of range‘.format(idx)) index 0 is out of range
阅读量:3903 次
发布时间:2019-05-23

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

先记录一些语法:

X[:, m:n]即取矩阵X的所有行中的的第m到n-1列数据,含左不含右。
X[0,:]就是取矩阵X的第0行的所有元素,X[1,:]取矩阵X的第一行的所有元素。

今天训练模型输入python3 train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data

第一次出现这个错误,记录解决方案:
查了看到有人说什么加上except:continue;大概跟我出的错不一样,总之我没法按照这样解决问题,先截图一下我出问题的界面:
File “train.py”, line 62, in
model = Darknet(opt.model_def).to(device)
File “/hexinyi/PyTorch-YOLOv3/models.py”, line 240, in init
self.yolo_layers = [layer[0] for layer in self.module_list if isinstance(layer[0], YOLOLayer)]
File “/hexinyi/PyTorch-YOLOv3/models.py”, line 240, in
self.yolo_layers = [layer[0] for layer in self.module_list if isinstance(layer[0], YOLOLayer)]
File “/usr/local/lib/python3.6/dist-packages/torch/nn/modules/container.py”, line 68, in getitem
return self._get_item_by_idx(self._modules.values(), idx)
File “/usr/local/lib/python3.6/dist-packages/torch/nn/modules/container.py”, line 60, in _get_item_by_idx
raise IndexError(‘index {} is out of range’.format(idx))
IndexError: index 0 is out of range
在这里插入图片描述
首先出现这个问题是在我新增了数据集的图片并且增加了种类数目之后(classes numbers)
然后我检查我的train.txt和label等txt文件是否写错了或者下标溢出了,但是都没有发现错误,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后我检查自己的config文件,怀疑可能是配置的问题,因为class的数目发生修改之后yolo层的config也需要修改:

在这里插入图片描述

然后发现我确实有写错,之前以为只有一层yolo,然后仔细看才发现有两层yolo:

在这里插入图片描述

然后每一个yolo之前的[convolutional]都需要修改其中的filters=21(因为是两类,3*7)
[yolo]的classes 修改为 2(原来是1) 改完之后 bash create_custom_model.sh,生成一个新的yolov3-custom.cfg,
其中cfg中有的要改的地方还没发生改变就手动修改过来,然后会弹出一个窗口说file changed,选择overwrite。

[net]# Testingbatch=1subdivisions=1# Training# batch=64# subdivisions=2width=416height=416channels=3momentum=0.9decay=0.0005angle=0saturation = 1.5exposure = 1.5hue=.1learning_rate=0.001burn_in=1000max_batches = 500200policy=stepssteps=400000,450000scales=.1,.1[convolutional]batch_normalize=1filters=16size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2 [convolutional]batch_normalize=1filters=32size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=64size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=128size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=256size=3stride=1pad=1activation=leaky[maxpool]size=2stride=2[convolutional]batch_normalize=1filters=512size=3stride=1pad=1activation=leaky[maxpool]size=2stride=1[convolutional]batch_normalize=1filters=1024size=3stride=1pad=1activation=leaky[convolutional]batch_normalize=1filters=256size=1stride=1pad=1activation=leaky[convolutional]batch_normalize=1filters=512size=3stride=1pad=1activation=leaky[convolutional]  #这里要修改filterssize=1stride=1pad=1filters=21activation=linear[yolo]   #注意这里mask = 3,4,5anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319classes=2num=6jitter=.3ignore_thresh = .7truth_thresh = 1random=1[route]layers = -4[convolutional]batch_normalize=1filters=128size=1stride=1pad=1activation=leaky[upsample]stride=2[route]layers = -1, 8[convolutional]batch_normalize=1filters=256size=3stride=1pad=1activation=leaky[convolutional] #修改filtersize=1stride=1pad=1filters=21activation=linear[yolo]  #这里要修改classesmask = 0,1,2anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319classes=2num=6jitter=.3ignore_thresh = .7truth_thresh = 1random=1

再次运行输入python3 train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data

成功了:
在这里插入图片描述
另外发现刚开始的epoch的mAP都非常低,到后来逐渐增高。

在这里插入图片描述

在第二十多epoch的时候已经达到百分之七十。
然后总结就是修改数据集后一定要注意cfg文件是否要修改。

转载地址:http://xvten.baihongyu.com/

你可能感兴趣的文章
geturl
查看>>
李建忠,设计模式教程.笔记061220
查看>>
李建忠,设计模式教程.笔记061221
查看>>
关于sizeof
查看>>
windows 核心编程笔记.070301
查看>>
WINDOWS核心编程笔记 070303
查看>>
终于解决了交叉表左上角,每页都显示的问题.
查看>>
windows核心编程 070309
查看>>
哈,又解决水晶报表的一个难题
查看>>
VC Ini文件处理
查看>>
一直误解sql事务的用法.
查看>>
转:利用C#实现分布式数据库查询
查看>>
转:Remoting系列(三)----对象的生命周期管理
查看>>
转:Remoting系列(二)----建立第一个入门程序
查看>>
转:Remoting系列(一)----Remoting的基本概念
查看>>
转:NET Remoting程序开发入门篇
查看>>
Net Remoting Singleton and Singlecall 区别
查看>>
2016年安大校赛(补题)
查看>>
BESTCODER ROUND92 1001.Skip the Class
查看>>
POJ 1661 Help Jimmy
查看>>