【问题记录】raise IndexError(‘index {} is out of range‘.format(idx)) index 0 is out of range
先記錄一些語法:
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。
再次運行輸入python3 train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data
成功了:
另外發現剛開始的epoch的mAP都非常低,到后來逐漸增高。
在第二十多epoch的時候已經達到百分之七十。
然后總結就是修改數據集后一定要注意cfg文件是否要修改。
總結
以上是生活随笔為你收集整理的【问题记录】raise IndexError(‘index {} is out of range‘.format(idx)) index 0 is out of range的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在集群服务器进行自定义数据集训练记录过程
- 下一篇: 【jetson nano】 aarch6