簡體   English   中英

如果 output 層(標簽)由 one-hot 向量和零向量組成,使用什么損失 function?

[英]What loss function to use if the output layer (label) is composed of one-hot vectors and zero vectors?

我正在嘗試使用 TensorFlow 和 Keras 設計基於深度學習的分類 model。 在我的 model 中,label 是一個可變長度的序列,例如:ABC、CADB 或 ABCDB。

為簡單起見,在 output 層中,我使用固定長度(等於最長序列的長度)來存儲所有序列。 因此,如果序列的長度比固定長度短,則該序列由 one-hot 向量(對應於序列的實際長度)和零向量(對應於剩余長度)表示。

例如,如果固定長度為 5,則序列 CADB 由 4 * 5 矩陣表示,如下所示:

民航局

請注意:這個矩陣的前 4 列是 one-hot 向量,每個向量都有一個且只有一個 1 條目,其他所有條目都是 0。 但是最后一列的條目都是0,可以看做是補零,因為序列不夠長。

如果所有向量都是 one-hot 向量,分類交叉熵是損失 function 的不錯選擇。 但在我的情況下,一些向量(例如,上圖中的第 5 列)只有 0 個條目,並且分類交叉熵在這里不起作用。

所以我的問題是:在這種情況下使用什么損失 Function

這就是我所理解的:您的序列長度固定為 output。 例如,序列的最大長度為 10,那么最后一層 output 長度為 10。在某些情況下,生成的長度序列只有 4,在這種情況下,最后 6 個輸出將為 0。
這是一個多標簽多類分類問題。 由於您在最后一個 Dense 層中使用 Keras,您可以使用 sigmoid 激活,對於損失,您可以使用 binary_crossentropy。
雖然,不確定您使用的是哪種架構,但是在序列生成的情況下,RNN、LSTM 等序列模型可能是比簡單密集層更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM