我的标签如下:
ios.plistInject=<key>UISupportedExternalAccessoryProtocols</key> <array><string>com.honeywell.scansled.protocol.decoder</string><string>com.honeywell.scansled.protocol.msr</string><string>com.honeywell.scansled.protocol.pm</string></array>
换句话说,类1,4,5存在于相应的样本中。我相信这被称为软类。
我用以下方式计算我的损失:
label = [0, 1, 0, 0, 1, 1, 0]
据Tensorboard称,损失随着时间的推移正在减少,正如预期的那样。但是,准确度为零:
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)
如何在使用软类时计算模型的准确度?
答案 0 :(得分: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指标。