keras:怎样使用 fit_generator 来训练多个不同类型的输出

这个例子非常简单明了,模型由1个输入,2个输出,两个输出的分支分别使用MSE作为损失。

x = Convolution2D(8, 5, 5, subsample=(1, 1))(image_input)
x = Activation('relu')(x)
x = Flatten()(x)
x = Dense(50, W_regularizer=l2(0.0001))(x)
x = Activation('relu')(x)

output1 = Dense(1, activation='linear', name='output1')(x)
output2 = Dense(1, activation='linear', name='output2')(x)

model = Model(input=image_input, output=[output1, output2])
model.compile(optimizer='adam', loss={'output1': 'mean_squared_error', 'output2': 'mean_squared_error'})

产生训练数据的生成器,这里y=[y1,y2].

batch_generator(x, y, batch_size):
        ....transform images
        ....generate batch batch of size: batch_size 
        yield(X_batch, {'output1': y1, 'output2': y2} ))

之后,调用fit_generator

model.fit_generator(batch_generator(X_train, y_train, batch_size))

原问题链接。

你可能感兴趣的:(keras)