случайным образом выбирайте уникальные идентификаторы изображений из списка идентификаторов изображений - python - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь обучить нейронную сеть в керасе, которая требует от меня обучения модели в пакетном режиме. Я хочу использовать пакетный размер 3 изображения, и в общей сложности 20 изображений.

Я хочу случайным образом выбрать 3 уникальных идентификатора изображения из списка из 20 идентификаторов изображений в одном пакете. Этот процесс будет повторяться на протяжении всей эпохи.

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 уникальных идентификаторов изображений. В каждую эпоху train_id будет случайным образом выбирать 3 уникальных идентификатора, если для параметра some_condition установлено значение True. Я получаю ошибку в train_id («Размер выборки больше, чем размер популяции») , когда я выбираю случайным образом 3 значения, когда в image_list осталось только 2 уникальных значения.

Я попытался найти замену np.random.choice для этой ошибки, но не смог найти.

1 Ответ

0 голосов
/ 05 мая 2018

просто чтобы дать вам идею. это имеет смысл, если ваши данные не велики.

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)
...