多输出Keras的回归损失函数

多输出Keras的回归损失函数,keras,neural-network,regression,loss,multipleoutputs,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

我正在使用深度学习方法解决一个具有多个输出(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'])

你所描述的听起来更像是一个分类任务,因为你想在最后得到一个概率分布。
因此,您应该在最后一层使用softmax(例如),并使用交叉熵作为损失度量。

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

每个输出是否可以取0到1之间的任何数字,包括?是,前提是总和等于1。每个输出是否可以取0到1之间的任何数字,包括?是,前提是总和等于1。