Tensorflow 提供的用于分类的 ops 有:
其中, 交叉熵相关的损失函数有:
注: logits 表示未归一化处理的概率, 一般是 softmax 的输入, 网络输出层的输出结果.
根据应用场景中,分类目标的独立性与互斥性, 可以选择 sigmoid 或者 softmax 来实现.
tf.nn.weighted_cross_entropy_with_logits(
targets,
logits, # float32 or float64 类型的张量
pos_weight, # 作用于 positive 样本的系数.
name=None )
sparse_softmax_cross_entropy_with_logits
.
该 op 内部对 logits 有 softmax 处理, 效率更高, 因此其输入需要未归一化的 logits.
不需使用 softmax 的输出. 否则, 结果会不正确.
tf.nn.softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None, # labels[i] 的每一行必须是有效的概率分布.
logits=None, # unscaled log 概率值.
dim=-1, # 类别class 的维度. 默认为 -1, 表示最后一维.
name=None )
tf.nn.softmax_cross_entropy_with_logits_v2(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None )
softmax_cross_entropy_with_logits
.
该 op 内部对 logits 有 softmax 处理, 效率更高, 因此其输入需要未归一化的 logits.
不需使用 softmax 的输出. 否则, 结果会不正确.
一种常用场景是, logits - [batch_size, num_classes]
, labels - [batch_size]
.
也支持高维场景.
tf.nn.sparse_softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
name=None
)