Keras: Как использовать fit_generator с несколькими входными изображениями и одним выходом?

#python #machine-learning #keras #neural-network #generator

#питон #машинное обучение #keras #нейронная сеть #генератор

Вопрос:

Возможно ли создать этот fit_generator?

Я создаю сеть U-net и хочу использовать в качестве входных данных изображение с высоким разрешением 500, весом 500 и 5 каналами, а на выходе — с высоким разрешением 500, весом 500 и 1 каналом

конфигурация модели

если это невозможно — я могу сам создать np.массивы размером 500x500x5, и тогда мне понадобится генератор для загрузки объектов numpy с жесткого диска

мой код сейчас (только для изображения rgb)

 train_generator=datagen.flow_from_directory('/content/data/',
                                                  target_size=(500,500),
                                                  color_mode='rgb',
                                                  batch_size=32,
                                                  class_mode='categorical', shuffle=False)
 

Ответ №1:

Вы должны создать свой собственный генератор. Важно получить while True : структуру и yield ваши данные. Код выглядит следующим образом

 batch_size=16
step_ep=data_size//batch_size

def generator():
  while True:
    for i in range(step_ep):
       process your images
       X=images
       Y=labels
       yield X,Y
 

С X помощью формы (batch_size,height,width,channel)
и Y формы (batch_size,height,width,output_channel)

Вы должны использовать model.fit() вместо model.fit_generator , потому что он скоро устареет.

Вы также можете создать генератор для своих данных проверки.

Ваш model.fit() выглядит как :

 model.fit(generator(),epochs,steps_per_epoch=step_ep, 
          validation_data=val_generator,validation_steps=val_steps)