Генератор данных в NN с несколькими входами - PullRequest
0 голосов
/ 10 сентября 2018

Я обучаю нейронную сеть (U-net) в Керасе с двумя входами и одним выходом.Первый вход представляет собой массив (изображение), а второй - одно значение.

input_img = Input(input_size, name='input_image')
input_depth = Input((1,), name='input_depth')
...
depth1 = RepeatVector(64)(input_depth)
depth1 = Reshape((8,8, 1))(depth1)
pool4 = concatenate([pool4, depth1], -1)
....
Model([input_img, input_depth], conv10)

Я построил следующий генератор данных для подачи модели:

def get_image_depth_generator_on_memory_v2(images, masks, depths, batch_size, data_gen_args):
    seed = 123
    image_datagen = ImageDataGenerator(**data_gen_args)
    mask_datagen = ImageDataGenerator(**data_gen_args)  

    image_f = image_datagen.flow(images, depths, batch_size=batch_size, shuffle=True, seed=seed)
    mask_f = mask_datagen.flow(masks, batch_size=batch_size, shuffle=True, seed=seed)

    while True:
        image_n = image_f.next()
        mask_n = mask_f.next()

        yield [image_n[0], image_n[1]], mask_n

Учебные работыкогда я кормлю модель без генератора:

model.fit([train_images, train_depths], train_masks)

Но это не работает, когда я использую генератор для подачи модели:

model.fit_generator(generator = get_image_depth_generator_on_memory_v2(
            train_images, train_masks, train_depths,
            batch_size=512, data_gen_args={}), 
            steps_per_epoch=500)

Я получаю следующую ошибку:

ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), but instead got the following list of 1 arrays: ...

Есть идеи о том, что происходит?

1 Ответ

0 голосов
/ 10 сентября 2018

Ошибка в том, что строка model.fit генерирует 1 вывод, в то время как для вашего model.generate требуется 2 выхода, поэтому либо предоставьте 2 выхода, либо попробуйте объединить выходные данные, чтобы соответствовать np.concatenate

...