繁体   English   中英

在损失函数中结合交叉熵和 mse

[英]Combine cross-entropy and mse in loss function

我正在研究回归问题。 我的数据集的标签范围为[0,1] 由于设计目的,数值超过0.3的标签转为负数,即0.35转为-0.35

在keras中,我第一次尝试mse作为损失函数,但是性能不好。 在我意识到标签的符号后,我也尝试了二元交叉熵。 但是性能还是不行。

正如我上面所解释的,似乎我们可以利用两个损失函数并将它们相加。 但是不知道怎么写代码。 此外,如果您对此特定数据集有任何其他建议,请告诉我。

您可以创建自己的损失函数,查看keras 文档源代码以获得想法,但它应该是这样的:

from keras.losses import mean_squared_error, binary_crossentropy

def my_custom_loss(y_true, y_pred):
    mse = mean_squared_error(y_true, y_pred)
    crossentropy = binary_crossentropy(y_true, y_pred)
    return mse + crossentropy

...

model.compile(loss=my_custom_loss, ...)

如果您需要基本的张量操作,还可以查看后端 API以使用原语

您可能想要使用 Keras 函数式 api 来构建多输出模型。

您可以为模型的分类部分创建一个输出,为模型的回归部分创建一个输出。 (仅供参考,在文献中这些被称为 CNN 的分类头和回归头。)

然后您可以为每个输出指定损失函数。

您还可以对每个损失函数进行加权(即为每个模型输出的损失的线性组合设置权重)。

这种类型的多输出模型在Keras 功能 api 指南中进行了解释。 通读链接,注意多输入多输出模型部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM