1. 程式人生 > >tensorflow 中 sparse_softmax_cross_entropy_with_logits 與 softmax_cross_entropy_with_logits區別

tensorflow 中 sparse_softmax_cross_entropy_with_logits 與 softmax_cross_entropy_with_logits區別

在tensorflow的入門教程中,有使用mnist資料集搭建了一層的簡單網路,然後在在計算輸出及loss的時候, 使用到了 softmax_cross_entropy_with_logits ,同時 tensorflow中還有sparse_ softmax_cross_entropy_with_logits,這兩個的意義是基本相同的,那它們有什麼區別呢?

如果看tensorflow原始碼,比較容易能看出來這兩者的區別。

 以基本的mnist分類場景有例,mnist有10類,訓練時的batch size為batch_num

(1) 則若使用 softmax_cross_entropy_with_logits, 則其labels引數需要是一個[batch_size, 10]的矩陣,其中每行代表一個instance, 是one hot的形式,其非0 index代表屬於哪一類。

(2)若使用sparse_softmax_cross_entropy_with_logits, 則其Labels引數是一個[batch_size]的列,裡面每個屬於0到9中間的整數,代表類別,所以函式名稱加了sparse, 類似稀疏表示。