Keras Predict Generator выполняет дополнительное выполнение
Генерация данных
def data_gen_test(list_files,id_pz_map,train_images_dir,batch_size,gpu=False):
seq = get_seq()
maxIterCount = (len(list_files) // batch_size) +1
count=0
while True:
for batch in chunker(list_files, batch_size):
print('count',count)
count=count+1
for x in batch:
print(x)
break;
X = [_read3(train_images_dir,x, (128,128,3),id_pz_map.get(x) ,gpu) for x in batch ]
print(' len(X) ',len(X))
if count % 1000 == 0: # For Every 5 Batch Print Progress
print(' ValidationProgress = ', (count) , count/maxIterCount,' % of lenFile=',len(list_files) )
#print('B4 Yeild isTraining',isTraining,count)
#print(X[0][0])
yield np.array(X)
Помощник для блока генерации данных
def chunker(seq, size):
#if printProgress:
# print('.')
return (seq[pos:pos + size] for pos in range(0, len(seq), size))
def get_seq():
sometimes = lambda aug: iaa.Sometimes(0.5, aug)
seq = iaa.Sequential(
[
# apply the following augmenters to most images
iaa.Fliplr(0.35), # horizontally flip 35% of all images
#iaa.Flipud(0.2) # vertically flip 20% of all images
],
random_order=True
)
return seq
Исполнение
print(datetime.now())
batch_size=10
predGen=data_gen_test(bigMetaTest[0:35].Image.values,id_pz_map_test,test_images_dir, batch_size,gpu=False)
bigMetaTestOut= model.predict_generator(predGen,steps=4) #(len(bigMetaTest)//batch_size)+1
#bigMetaTestOut=bigMetaTestOut[0:len(len(bigMetaTest))]
print(datetime.now())
Вывод
2020-03-14 20: 31: 46.885238
count 0 ID_000000e27 len ( X) 10
count 1 ID_000357857 len (X) 10
count 2 ID_000bda502 len (X) 10
count 3 ID_000fd1a41 len (X) 5
# ТАК ЧТО ТАК ХОРОШО, НО НИЖЕ НЕ ОЖИДАЕТСЯ
count 4 ID_000000e27 2020-03-14
20: 31: 52.222856 len (X) 10
Цитата
Мы могли видеть, что 'count 4 ID_000000e27' и ID_000000e27 уже были замечены в итерации номер 1. Если я даю model.predict_generator (predGen, steps = 0) НЕТ Итерация, которая хороша , Но если я задаю Шаги = 1 .. вместо ДВУХ
ДВУХ итераций