私のラベルは次のようになります。
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])
ソフト クラスを使用する場合、モデルの精度を計算するにはどうすればよいですか?