2017-09-26 71 views
0

我想了解tf.nn.sparse_softmax_cross_entropy_with_logits的工作原理。tf.nn.sparse_softmax_cross_entropy_with_logits - 在tensorflow中沒有一個熱編碼的標籤

描述說:

A common use case is to have logits of shape [batch_size, num_classes] 
and labels of shape [batch_size]. But higher dimensions are supported. 

所以它表明,我們可以用原始的形式送入標籤例如[1,2,3]

現在,因爲所有的計算都每批做我認爲可能有如下優點:

在任何情況下,我們假設一批相等的兩個的大小。

案例1(一個批次): 羅吉特:

0.4 0.2 0.4 
0.3 0.3 0.4 

correspoding標籤:

2 
3 

我猜標籤可能被編碼爲

[1 0 0] 
[0 1 0] 

案例2(與另一批): logit:

0.4 0.2 0.4 
0.3 0.3 0.4 

correspoding標籤:

1 
2 

我猜標籤可能被編碼爲(我看不出有什麼阻止了我們這個編碼,除非tensorflow跟蹤它之前編碼)

[1 0 0] 
[0 1 0] 

所以我們有兩個不同的編碼。假設tensorflow保持批次之間的編碼一致性是否安全?

回答

2

沒有真正的編碼發生。標籤是1的只是位置在根據一個熱載體:

0 -> [1, 0, 0] 
1 -> [0, 1, 0] 
2 -> [0, 0, 1] 

這種「編碼」將在每一批中。

+0

非常感謝!所以我的標籤必須具有某種格式?如果我的標籤是34,45,133,並且我們只有三個類別 – user1700890

+1

@ user1700890是的,您的標籤必須是介於0到number_of_classes - 1之間的整數。如果您的標籤是34,45和133,則必須將它們編碼爲0 ,1和2自己。 – BlueSun

相關問題