我使用暹罗网络的人脸数据集.在此数据集中,我们有1000个唯一的标签(标签是文件夹的名称),并且在每个文件夹中,我们有20个图像此数据集中的所有图像都是2000.此错误是由于以下行:

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]

输出:

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)是否为真

  • 随机 Select 是 Select 一个大于len(idx)的指数(基于标签).为了防止索引超出范围,在继续随机 Select 之前,需要判断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]

Python相关问答推荐

将大小为n*512的数组绘制到另一个大小为n*256的数组的PC组件

我可以使用极点优化这个面向cpu的pandas代码吗?

在两极中实施频率编码

sys.modulesgo 哪儿了?

Tkinter -控制调色板的位置

pandas DataFrame中类型转换混乱

Polars:使用列值引用when / then表达中的其他列

如何计算列表列行之间的公共元素

无法使用equals_html从网址获取全文

如何使用Google Gemini API为单个提示生成多个响应?

max_of_three使用First_select、second_select、

需要计算60,000个坐标之间的距离

如何在Python中并行化以下搜索?

numpy卷积与有效

pyscript中的压痕问题

如何获得每个组的时间戳差异?

Pandas—在数据透视表中占总数的百分比

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

为什么if2/if3会提供两种不同的输出?

Numpyro AR(1)均值切换模型抽样不一致性