簡體   English   中英

標簽大小與target_names不同:Tensorflow多輸入回歸轉換為分類

[英]Labels size different from target_names: Tensorflow Multi-Input Regression converting to Classification

我正在嘗試將多輸入混合輸入(txt,圖像)keras模型從回歸輸出(房屋價格)轉換為分類輸出(卧室數量)。 特別是,我正在更改本教程

https://www.pyimagesearch.com/2019/02/04/keras-multiple-inputs-and-mixed-data/

成為分類器。 關於類別的數量,我有幾個技術問題,而且我還得到一個我不完全理解的錯誤。

我將網絡的最后一層更改為softmax:

x = Dense(11, activation="softmax")(x)

但是我只有10個類別(數據集涵蓋1-10個卧室的房屋)。 但是使用Dense(10,...)我得到以下錯誤:

InvalidArgumentError:接收到的標簽值10大於有效范圍[0,10)。 標簽值:3 2 5 2 10 3 2 5

我理解該錯誤以及如何避免該錯誤,但是考慮到我沒有帶0個卧室的房屋,為什么[0,10)的范圍還不夠?

當我嘗試獲取分類報告時,會收到兩個警告:

UserWarning:標簽大小為6,與target_names大小不匹配,為10 UndefinedMetricWarning:精度和F分數定義不明確,並且在沒有預測樣本的標簽中設置為0.0。

我認為這些可能是因為我的分類報告僅包含1-6間卧室的房屋。 但不確定-您能提供的任何見解將不勝感激。

我的代碼和數據集可以從這里克隆: https : //github.com/davidrtfraser/blog-keras-multi-input

通常在機器學習中,N個類的標簽被編碼為0到N-1范圍內的整數,因為這直接從類索引映射,因此您可以使用argmax從模型輸出中恢復它們。

所以,你需要以同樣的方式編碼的標簽,最簡單的方法就是。減去你的[1, 10]標簽[0, 9]由每個標簽從其減去一個,並從模型輸出得到卧室的數量,您將一個添加到輸出標簽。

暫無
暫無

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

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