多输出 Keras 的回归损失函数
Posted
技术标签:
【中文标题】多输出 Keras 的回归损失函数【英文标题】:Regression Loss function for Multi outputs Keras 【发布时间】:2019-06-23 21:00:42 【问题描述】:我正在使用深度学习方法来解决具有多输出(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'])
【问题讨论】:
每个输出可以取 0 到 1 之间的任意数字吗? 可以,只要总和等于 1。 【参考方案1】:您所描述的内容听起来更像是一项分类任务,因为您希望最后得到一个概率分布。 因此,您应该在最后一层使用 softmax(例如)并使用交叉熵作为损失度量。
【讨论】:
请注意类似的question。以上是关于多输出 Keras 的回归损失函数的主要内容,如果未能解决你的问题,请参考以下文章