![](/img/trans.png)
[英]I get this error when using a while loop to make a “list” IndexError: list assignment index out of range
[英]I want make positive image and label pairs but I take this error IndexError: list index out of range
我將人臉數據集用於連體網絡。 在這個數據集中,我們有 1000 個唯一標簽(標簽是文件夾的名稱),在每個文件夾中,我們有 20 個圖像,這個數據集中的所有圖像都是 20000。這個錯誤是因為這行:
idxB = np.random.choice(idx[label])
所以我想制作正面和負面的圖像,但是當我這樣做時,我得到:
IndexError:列表索引超出范圍錯誤。
代碼如下:
pair_images = []
pair_labels = []
new_labels = []
for k in labels:
new_labels.append(int(k))
numClasses = len(np.unique(new_labels))
new_labels = np.array(new_labels)
idx = [np.where(new_labels == i)[0] for i in range(0,numClasses)]
print (len(idx))
for i,idxA in enumerate (range(len(images))):
# print(i)
# Make Posetive Images
currentImage = images[idxA]
label = new_labels[idxA]
idxB = np.random.choice(idx[label])
print (idxB)
# posImage = images[idxB]
output:
0
1
2
3
4
....
....
....
....
11713
11718
11709
11700
11700
11710
11717
11717
11707
Traceback (most recent call last):
File "/Users/admin/Documents/Ostad/Ostad Ghasemi/Courses/Advabced Tensorflow/Home Works/Week-4/E-1-Face Verification/Utilities.py", line 73, in <module>
make_pairs(all_image, all_label)
File "/Users/admin/Documents/Ostad/Ostad Ghasemi/Courses/Advabced Tensorflow/Home Works/Week-4/E-1-Face Verification/Utilities.py", line 37, in make_pairs
idxB = np.random.choice(idx[label])
IndexError: list index out of range
我可以知道如何解決此錯誤嗎?
需要檢查以下內容:
檢查len(images) <= len(labels)
是否為真
隨機選擇是選擇一個大於len(idx)
。 為防止索引超出范圍,在繼續隨機選擇之前,需要檢查label < len(idx)
是否為真,例如:
for i,idxA in enumerate(range(len(images))):
# print(i)
# Make Posetive Images
currentImage = images[idxA]
label = new_labels[idxA]
if label < len(idx): #add this check
idxB = np.random.choice(idx[label])
print (idxB)
# posImage = images[idxB]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.