def calculate_loss(self, predictions, labels, **unused_params):
false_positive_punishment = FLAGS.false_positive_punishment
false_negative_punishment = FLAGS.false_negative_punishment
with tf.name_scope("loss_xent_recall"):
epsilon = 10e-6
if FLAGS.label_smoothing:
float_labels = smoothing(labels)
else:
float_labels = tf.cast(labels, tf.float32)
cross_entropy_loss = false_negative_punishment * float_labels * tf.log(predictions + epsilon) \
+ false_positive_punishment * ( 1 - float_labels) * tf.log(1 - predictions + epsilon)
cross_entropy_loss = tf.negative(cross_entropy_loss)
return tf.reduce_mean(tf.reduce_sum(cross_entropy_loss, 1))
评论列表
文章目录