给定一组用于训练神经网络的训练示例,我们希望为训练中的各种示例赋予或多或少的权重。我们根据示例“值”(例如有效性或置信度)的某些标准对每个示例应用 0.0 到 1.0 之间的权重。如何在 Tensorflow 中实现这一点,特别是在使用 tf.nn.sparse_softmax_cross_entropy_with_logits() 时?
最佳答案
在最常见的情况下,您使用形状为 [batch_size, num_classes]
和 的
形状为 logits
调用 tf.nn.sparse_softmax_cross_entropy_with_logits
labels[batch_size]
,该函数返回形状为 batch_size
的张量。您可以将此张量与权重张量相乘,然后将它们减少为单个损失值:
weights = tf.placeholder(name="loss_weights", shape=[None], dtype=tf.float32)
loss_per_example = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)
loss = tf.reduce_mean(weights * loss_per_example)
关于machine-learning - Tensorflow 中的加权训练示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45867942/