多输出Keras的回归损失功能

时间:2019-01-30 14:34:31

标签: keras neural-network regression loss multipleoutputs

我正在使用深度学习方法来解决具有多个输出(16个输出)的回归问题,每个输出在 [0,1] 之间,总和为 1 。 我对哪个损失函数最适合此问题感到困惑,我已经测试了均方误差均值绝对误差,但是神经网络预测的值始终相同。

model = applications.VGG16(include_top=False, weights = None, input_shape = (256, 256, 3))

x = model.output
x = Flatten()(x)
x = Dense(1024)(x)
x=BatchNormalization()(x)
x = Activation("relu")(x)
x = Dropout(0.5)(x)
x = Dense(512)(x)
x=BatchNormalization()(x)
x = Activation("relu")(x)
x = Dropout(0.5)(x)

predictions = Dense(16,activation="sigmoid")(x)


model_final = Model(input = model.input, output = predictions)


model_final.compile(loss ='mse', optimizer = Adam(lr=0.1), metrics=['mae'])

1 个答案:

答案 0 :(得分:3)

您要描述的内容听起来更像是一项分类任务,因为您希望最后获得概率分布。 因此,您应该在最后一层中使用softmax(例如),并使用交叉熵作为损耗度量。