keras中的多个输出 - 模型需要多个目标数组但收到1

时间:2017-11-20 17:40:47

标签: python keras conv-neural-network multipleoutputs

我有一个问题涉及找出图像中特定线条的存在。 作为输入 - 我有一个96 * 54的二进制图像,因为输出我有18个数字,1或0。

当我尝试创建多个输出时,在拟合后我得到以下错误: 该模型需要18个目标数组,但只接收一个数组。 我试过尝试以多种方式重塑输出tenzor,甚至使用python数组来保存np tenzors,但没有成功。

这是代码:

main_input = Input(shape=(54,96,1))
x = Conv2D(16,kernel_size=(3,3),activation='relu')(main_input)
x = MaxPooling2D(pool_size=(2,2))(x)
x = Conv2D(32,kernel_size=(3,3),activation='relu')(x)
x = MaxPooling2D(pool_size=(2,2))(x)
x = Conv2D(64,(3,3),activation='relu')(x)
x = MaxPooling2D(pool_size=(2,2))(x)
x = Conv2D(128,(3,3),activation='relu')(x)
x = Flatten()(x)
x = Dense(256,activation='relu')(x)
out = [Dense(1,activation='softmax')(x)] * 18
y_train_split = np.asarray([y_train[:,i] for i in range(18)])

model = Model(inputs=main_input, outputs=out)
model.compile(loss=keras.losses.binary_crossentropy, optimizer=keras.optimizers.Adadelta(),metrics=['accuracy'])
model.fit(x_train, y_train_split, batch_size=batch_size, epochs=epochs,verbose=1,validation_data = (x_test,y_test))
score = model.evaluate(x_eval,y_eval,verbose=0)

0 个答案:

没有答案