在Keras中處理多分類問題通常使用softmax激活函數和categorical_crossentropy損失函數。以下是一個簡單的多分類問題的例子:
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(100,)))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 訓練模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 評估模型
loss, accuracy = model.evaluate(X_test, y_test)
print('Test accuracy:', accuracy)
在這個例子中,我們使用了一個包含兩個隱藏層的神經網絡,最后一層是一個具有10個類別的softmax層。在訓練模型時,我們使用了categorical_crossentropy損失函數和adam優化器。最后,我們評估了模型在測試集上的準確率。
在處理多分類問題時,需要將標簽進行one-hot編碼,即將每個類別轉換為一個長度為類別數量的向量,其中對應的類別位置為1,其余位置為0。在Keras中可以使用to_categorical
函數來進行轉換。
from keras.utils import to_categorical
# 將標簽進行one-hot編碼
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)