计算带损失调整的softmax成本函数,解释此代码?

2024-10-03 06:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

def loss(self, predictions, labels, param, training=True):
    hot_labels = tf.one_hot(labels, param.output_size)
    softmaxed = tf.nn.softmax_cross_entropy_with_logits(labels= hot_labels, logits=predictions)

    low_adj = np.logical_xor(labels==0,tf.argmax(tf.nn.softmax(predictions),1).numpy() == 0) * 0.4
    high_adj = np.logical_xor(labels==1,tf.argmax(tf.nn.softmax(predictions),1).numpy() == 1) * 0.2

    lossed = tf.reduce_mean(softmaxed + softmaxed*high_adj + softmaxed*low_adj)
    return lossed

我正在研究一个二进制分类问题。以上是用于相同目的的损失函数。然而,这是其他人的代码,我不太明白为什么要使用低_adj高_adj

这里正在进行什么样的调整?如果你解释为什么使用0.40.2? 我看不到更大的图景

提前谢谢


Tags: labelsparamtfnpnnlowlogicalhot