从图像ID列表中随机选择唯一的图像ID - python

时间:2018-05-04 18:16:22

标签: python numpy random machine-learning

我正在尝试在keras中训练神经网络,这需要我分批训练模型。我想使用3个图像的批量大小,总共有20个图像。

我想从一个批次中的20个图像ID列表中随机选择3个唯一图像ID。这个过程将在整个时代重新进行。

import numpy as np
image_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
epoch = 10
num = 3 # number of values to choose from

for ep in range(epoch):
    count = 0
    ilist = image_list

    while count <= len(image_list):

        if len(ilist)<num:
            # This condition works when sample size is greater than population size
            image_index = list(np.random.choice(image_list,len(image_list)))
        else:
            image_index = list(np.random.choice(image_list,num,replace = False))

        for c in image_index:
            ilist.remove(c)
        # image_index
        # data loading code
        # feature extraction code
        # model training
        count += len(image_index)

image_list是20个唯一图像ID的列表。在每个纪元中,只要some_condition为True,train_id将随机选择3个唯一ID。当我在image_list中只剩下2个唯一值时,当我随机选择3个值时,我在train_id (&#39;样本大小大于种群大小&#39;)时出现错误。

我试图为此错误找到np.random.choice的替代品,但无法找到。

1 个答案:

答案 0 :(得分:0)

只是为了给你一个想法。如果你的数据不大,那就没有意义。

import numpy as np
x = np.array([[100],[200],[300],[400]])

np.random.shuffle(x)

for i in range(0,3):
    do_something = x[i]
    print(do_something)

或类似的东西:

import numpy as np
x = np.array([[100],[200],[300],[400]])

for i in range(10):#epoch:
    np.random.shuffle(x)
    do_something = x[:3,:]
    print(do_something)