[英]Data generator in a NN with multiple inputs
I am training a Neural Network (U-net) in Keras with two inputs and one output. 我正在用两个输入和一个输出在Keras训练神经网络(U-net)。 The first input is an Array (image) and the second one a single value. 第一个输入是一个数组(图像),第二个输入是单个值。
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)
I have built the following Data Generator to feed the model: 我建立了以下数据生成器来提供模型:
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
The training works when I feed the model without the generator: 在没有生成器的情况下输入模型时,训练有效:
model.fit([train_images, train_depths], train_masks)
But it doesn't work when I use the generator to feed the model: 但是当我使用生成器来馈送模型时,它不起作用:
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)
I get the next error: 我收到下一个错误:
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: ...
Any idea about what is going on? 关于发生了什么的任何想法?
错误是您的model.fit行生成1个输出,而您的model.generate需要2个输出,因此要么提供2个输出,要么尝试连接输出以适合使用np.concatenate
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.