簡體   English   中英

我想制作正面圖像和 label 對,但我收到此錯誤 IndexError: list 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM