1 tf.nn.softmax_cross_entropy_with_logits(labels=label, logits=logits)
logits = [[0.1,0.2,0.3], [1, 2, 3]]
label = [[0,0,1],[0,0,1]]
2 tf.nn.sparse_softmax_cross_entropy_with_logits(labels=label1, logits=logits)
logits = [[0.1,0.2,0.3], [1, 2, 3]]
label = [[2, 2]]
共同点: 两个函数对于输入logits要求都是为归一化的,即没有经过softmax函数。输出是一样的。
不同点: 两个函数对于label输入是不同的,函数1输入是one_hot向量,可以看到,label的维数和logits是一样的。 函数2强调输入是稀疏的,其维度比logits少1。
上述函数可以用TF其他函数拆分:
logsits_scale = tf.nn.softmax(logist)
-tf.reduce_sum(label*tf.log(logsits_scale))
那为什么TF还要提供这两个函数呢,官方API文档说是为了计算效率。