这是多类回归的良好对数损失吗?

我需要同时预测多个类别,因此我将这个问题视为对真实输出中的二进制标签/类别进行非线性回归。

鉴于此,损失函数是每个标签的对数损失之和,然后针对批次中的每个示例进行平均。这里是我的损失函数:

prediction = tf.sigmoid(hidden_out)  # 预测输出,从0.0到1.0# 避免极端情况下的无限梯度# 通过将预测从0.005重新映射到0.995:pred = prediction*0.99+0.005 # 对数损失:均值在批次大小上,求和在标签上: loss = tf.reduce_mean(    tf.reduce_sum(        - labels*tf.log(pred) - (1.0-labels)*tf.log(1.0-pred),         reduction_indices=1    ))

我怀疑这里有问题。我正在尝试训练一个带有残差Inception层的深度卷积神经网络。在低学习率下,损失很快就会出现NaN值。

我的对数损失正确吗?有什么建议吗?


回答:

你可以使用已经为多类逻辑回归实现的损失函数,而不是你自己的损失函数:sigmoid_cross_entropy_with_logits。它被精心设计以避免数值问题。

此外,与其裁剪预测,不如裁剪梯度。参见这里,例如。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注