2

我的标签如下所示:

label = [0, 1, 0, 0, 1, 1, 0]

换句话说,相应的样本中存在第 1、4、5 类。我相信这叫做软课

我正在计算我的损失:

logits = tf.layers.dense(encoding, 7, activation=None)

cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(
    labels=labels,
    logits=logits
)

loss = tf.reduce_mean(cross_entropy)

根据 Tensorboard 的说法,正如预期的那样,损失随着时间的推移而减少。但是,准确度为零:

eval_metric_ops = {
    'accuracy': tf.metrics.accuracy(labels=labels, predictions=logits),
}
tf.summary.scalar('accuracy', eval_metric_ops['accuracy'][1])

使用软类时如何计算模型的准确性?

4

1 回答 1

0

你解决了吗?我认为关于 softmax_cross_entropy_with_logits 的评论是不正确的,因为您有一个多标签(每个标签都是一个)二元类问题。

部分解决方案:

labels = tf.constant([1, 1, 1, 0, 0, 0])  # example
predicitons = tf.constant([0, 1, 0, 0, 1, 0])  # example
is_equal = tf.equal(label, predicitons)
accuracy = tf.reduce_mean(tf.cast(is_equal, tf.float32))

这给出了一个数字,但仍需要将其转换为 tf 指标。

于 2018-07-13T08:00:34.107 回答