![](/img/trans.png)
[英]Keras model.predict with sigmoid activation and binary cross entropy returns only 0 or 1, not probability
[英]Keras model only working with Sigmoid activation
我正在構建一個 Keras model 將數據分類為 9 個類別之一。 問題是它只適用於為二進制輸出設計的 Sigmoid 激活,其他激活導致 0 精度。 我需要更改什么才能將其分類到每個標簽中?
#Reshape data to add new dimension
X_train = X_train.reshape((100, 150, 1))
Y_train = X_train.reshape((100, 1, 1))
model = Sequential()
model.add(Conv1d(1, kernel_size=3, activation='relu', input_shape=(None, 1)))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='categorical_hinge', optimizer='adam', metrics=['accuracy'])
model.fit(x=X_train,y=Y_train, epochs=200, batch_size=20)
單單元密集層不是我們在多類分類的情況下使用的; 您應該首先確保您的Y
數據是一次性編碼的 - 如果沒有,您可以使用 Keras 實用程序函數來制作它們:
num_classes=9
Y_train = keras.utils.to_categorical(Y_train, num_classes)
然后將最后一層更改為:
model.add(Dense(num_classes))
model.add(Activation('softmax'))
此外,如果您沒有任何具體原因使用分類鉸鏈損失,我建議您在 model 編譯中從loss='categorical_crossentropy'
開始。
也就是說,您的 model 似乎太簡單了,您可能想嘗試添加更多層...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.