簡體   English   中英

Keras中具有二進制分類的多標簽

[英]Multilabel with binary classification in Keras

目前,我正在使用Keras,Sci-kit Learn等進行圖像分類。

我將嘗試解釋所有問題。 就像我之前說的,這是帶有多標簽的圖像分類。 我的數據框包含4000個微觀油樣,標簽表示當前樣品中的一些顆粒。 我將在下面舉一個例子。

好吧,數據幀中的所有圖像都被標記了。 想象一下,每個圖像包含一個具有13個值的數組,這些值已經是二進制值,當然,正數為1,負數為0。

例如

[0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0]

這意味着對於每個圖像,可能有多個輸出,在這種情況下,目標是將一個油樣提供給CNN,並且可以返回圖像中存在的粒子。

我不知道是否足夠清楚,對不起,現在我將解釋我的真正問題。

在我的CNN中,我已經將輸出層設置為13(緊隨每個圖像中的標簽數量之后)。 我不知道為什么,但是當我訓練模型時,預測的Y僅返回一個值,例如:

Y predicted (sample 14): 3
Y predicted (sample 65): 11

我需要獲得具有多個輸出的謂詞,例如:

Y predicted (sample 14): 3, 7, 9, 12
Y predicted (sample 65): 5, 8, 9, 11

我需要幫助來解決此問題,因為我堅持了很長時間。 如果有人知道此策略,我將不勝感激。

提前致謝!

您的問題稱為多標簽分類。 這意味着一次可以在模型輸出中出現多個類別,而不僅僅是一個類別。

給定預測向量,您可以通過應用閾值獲得單獨的類別:

thresh = 0.5
p = model.predict(some_input)
classes = []
for prob, idx in enumerate(p):
    if prob > thresh:
        classes.append(idx)

print(classes)

執行此操作后,您將獲得模型預測的具有不同類的可變大小向量。 閾值(閾值)是您必須使用應用於每個類的二進制分類的性能指標來調整的參數。 您也可以為每個班級設置不同的閾值。

閾值是您必須調整的。 現在,您將獲得0和1的向量,其中0 in

暫無
暫無

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

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