好记性不如烂笔头!
一、什么是logits?
logits:未归一化的概率,即各个特征的加权之和。logits经过sigmoid或softmax函数变为归一化的概率值。
logits = log(p/(1-p))
p = 1 / (1 + e^(-logits))
二、在keras中的运用?(假定标签y为categorical类型)
先在compile中设置loss为keras.losses.categorical_crossentropy(y_true, y_pred),然后调用tf的categorical_crossentropy。
1、判断preds本身的shape长度,用以校验axis
2、一般model最后一层是softmax,则输出的预测值preds已经是归一化(非logits值!),满足not from_logits条件,进入步骤3,否则直接调用else内的语句,结束。
3、再次缩放softmax函数的归一化值(线性变换,保证单个sample的probas之和为1),同时保持shape不变!
4、使用tf.clip_by_value函数限定preds的输出范围,并调用tf.reduce_sum(target*tf.log(preds), -1)求解交叉熵。
更多学习笔记可以关注我的微信公众号「kelly学挖掘」,欢迎交流。
-- over --