사용자 지정 데이터 생성기가 필요합니다.
model.fit_generator(generator=batch_generator(ids_train_split), \
steps_per_epoch= \
np.ceil(float(len(ids_train_split))/float(batch_size)),\
epochs=epochs, verbose=1, callbacks=callbacks, \
validation_data=batch_generator(ids_valid_split), \
validation_steps=np.ceil(float(len(ids_valid_split))/float(batch_size)))
:
import numpy as np
import cv2
def batch_generator(ids):
while True:
for start in range(0, len(ids), batch_size):
x_batch = []
y_batch = []
end = min(start + batch_size, len(ids))
ids_batch = ids[start:end]
for id in ids_batch:
img = cv2.imread(dpath+'train/{}.jpg'.format(id))
#img = cv2.resize(img, (224, 224), interpolation = cv2.INTER_AREA)
labelname=df_train.loc[df_train.id==id,'column_name'].values
labelnum=classes.index(labelname)
x_batch.append(img)
y_batch.append(labelnum)
x_batch = np.array(x_batch, np.float32)
y_batch = to_categorical(y_batch,120)
yield x_batch, y_batch
그럼 당신은 유일한 식별자 (또는 이미지 이름)이 같은 NumPy와 배열 발전기를 호출 할 수 있습니다