sparse_softmax_cross_entropy_with_logits
覺得有用的話,歡迎一起討論相互學習~
定義
sparse_softmax_cross_entropy_with_logits(_sentinel=None, # pylint: disable=invalid-name
labels=None, logits=None,
name=None):
說明
- 此函數大致與tf_nn_softmax_cross_entropy_with_logits的計算方式相同,
- 適用於每個類別相互獨立且排斥的情況,一幅圖只能屬於一類,而不能同時包含一條狗和一只大象
- 但是在對於labels的處理上有不同之處,labels從shape來說此函數要求shape為[batch_size],labels[i]是[0,num_classes)的一個索引, type為int32或int64,即labels限定了是一個一階tensor,並且取值范圍只能在分類數之內,表示一個對象只能屬於一個類別
參數
_sentinel:本質上是不用的參數,不用填
logits:shape為[batch_size,num_classes],type為float32或float64
name:操作的名字,可填可不填
示例代碼
import tensorflow as tf
input_data = tf.Variable([[0.2, 0.1, 0.9], [0.3, 0.4, 0.6]], dtype=tf.float32)
output = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=input_data, labels=[0, 2])
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(output))
# [ 1.36573195 0.93983102]