1. 程式人生 > >[tensorflow損失函式系列]sparse_softmax_cross_entropy_with_logits

[tensorflow損失函式系列]sparse_softmax_cross_entropy_with_logits

sparse_softmax_cross_entropy_with_logits

原創文章,請勿轉載!!

定義

sparse_softmax_cross_entropy_with_logits(_sentinel=None, 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]