下面分別給出二分類和多分類的例子,需要重點關注一下這兩個案例的異同點,後面會給出詳細說明:
二分類
# -*- coding: utf-8 -*-
"""
@ModuleName:example_1
@Function:
@Author: 坡哥
@Time: 2020/3/12 8:34
"""
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
if __name__ == "__main__":
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy',
metrics=['accuracy'])
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))
model.fit(data, labels, epochs=10, batch_size=32)
多分類
# -*- coding: utf-8 -*-
"""
@ModuleName:example_1
@Function:
@Author: 坡哥
@Time: 2020/3/12 8:34
"""
import numpy as np
import keras
from keras.models import Sequential
from keras.layers import Dense
if __name__ == "__main__":
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy',
metrics=['accuracy'])
data = np.random.random((1000, 100))
labels = np.random.randint(10, size=(1000, 1))
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)
model.fit(data, one_hot_labels, epochs=10, batch_size=32)
異同點:
1、model.add(Dense(10, activation='softmax'))
多分類時最後一層要用softmax層,且給出分類的個數10
2、
model.compile(optimizer='rmsprop', loss='categorical_crossentropy',
metrics=['accuracy'])
loss選擇categorical_crossentropy時,下面要對label進行one_hot編碼
3、
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)