2016-09-18 68 views
0

TensorFlow非常棒,我們已經將它用於圖像分類或推薦系統。我們使用softmaxcross entropy作爲損失函數。它適用於只有一種標籤的情況。例如,我們只在MNIST數據集中選擇0到9之間的一個數字。如何在TensorFlow中使用兩種類型的標籤

現在我們有了性別和年齡的特徵。我們對每個示例都有一個熱門編碼,例如[1,0,1,0,0,0,0]。前兩個標籤代表性別,最後五個標籤代表年齡。每個示例有兩個1,其他的應該是0。

現在我們的代碼看起來像這樣。

logits = inference(batch_features) 
softmax = tf.nn.softmax(logits) 

但我發現它「SOFTMAX」的所有標籤,並總結爲2。但我想到的是前兩項之和達到1和過去五年總和高達1.不知道如何實現在TensorFlow中,因爲這7(2 + 5)個特徵看起來是一樣的。

回答

1

你有你的性別和年齡logits連接在一起。

你想要邊際預測。

您需要將您的logits(tf.slice)拆分爲兩個數組,並分別softmax它們。

請記住,這隻能給你邊際概率。 它不能代表「一個老男人或一個年輕女人」,因爲這不能分解。

因此,您可能需要進行聯合預測。 5x2類而不是5+2類。顯然,這個更強大的模型更容易出現過度裝配。

如果您在每個類別中都有很多類,則可以通過將多個邊際預測相加來構建聯合矩陣的低階分解的中間模型。這給Nxr+Mxr條目而不是N+MNxM

相關問題