簡體   English   中英

Keras model 僅適用於 Sigmoid 激活

[英]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.

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