This answer解释了如何使用类权来惩罚Tensorflow中的错误分类。我使用的数据集更加复杂,因此使用类权重仍然存在问题。
有 7类 {c0,c1,c2,c3,c4,c5,c6}
每个类别的样本数量为:
分别所有样本 = 98070
c0 = 1607c1 = 5292
c2 = 4322
c3 = 3322
c4 = 6629
c5 = 7507
c6 = 69391
这些类的洞察力: [1.6%,5.4%,4.4%,3.4%,6.7%,7.6%,71%]
Tensorflow模型将每个测试样本归为 c6 ,而没有使用类别权重。 我想为产品添加班级重量来解决此问题。但是,由于我应该权衡多数类的损失并增加少数类的损失,所以 我不知道如何在这里将class_weights用于多类< / em> ?
换句话说,在我的情况下,我想正确地计算班级权重,并使总和等于1。班级权重应降低大多数班级的损失权重,而应提高针对大多数班级的损失权重。少数阶层...
注意::::
我使用深度学习的完全连接层进行分类,而不是使用SVM。
答案 0 :(得分:0)
weights = tf.gather(1. / class_weights, labels)
loss = tf.losses.sparse_softmax_cross_entropy(
logits=logits, labels=labels, weights=weights)