- 输出值self.preds为一维数据
- 标签值 self.labels为{-1,1}
- 正负样本比例=1:10 ;所以分类错误的时候,负样本loss 比例要更低,为正例样本分错时候的0.1倍。以此达到平衡样本的目的
scale_vector = (pn_ratio * (self.labels - 1) / -2) + ((self.labels + 1) / 2) # label=-1,scale_vector=0.1;label=1,scale_vector=1
logits = tf.concat([-self.preds, self.preds], axis=1) #preds>0,后面经过solfmax为[0,1];preds<0,后面经过solfmax为[1,0]
labels = tf.stack([(self.labels - 1) / -2, (self.labels + 1) / 2], axis=1)# lavels=1,[0,1];labels=-1,[1,0]
self.loss = tf.losses.softmax_cross_entropy(labels, logits, weights=scale_vector)