我正在尝试在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的替代品,但无法找到。
答案 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)