數(shù)據(jù)和方法
CIFAR-10數(shù)據(jù)集有6000個(gè)32×32個(gè)彩色圖片,50000個(gè)訓(xùn)練圖片和10000個(gè)測試圖片绅项。有10個(gè)類別:飛機(jī)紊册、汽車、鳥快耿、貓囊陡、鹿、狗掀亥、青蛙撞反、馬、船搪花、卡車遏片。
數(shù)據(jù)下載和處理
數(shù)據(jù)下載
Keras已經(jīng)提供了模塊用于下載數(shù)據(jù),通過一下代碼即可完成下載鳍侣。
from keras.datasets import cifar10
import numpy as np
np.random.seed(10)
(x_img_train,y_label_train),(x_img_test,y_label_test)=cifar10.load_data()
數(shù)據(jù)處理
- 標(biāo)準(zhǔn)化
- label的one-hot編碼
x_img_train_normalize = x_img_train.astype('float32') / 255.0
x_img_test_normalize = x_img_test.astype('float32') / 255.0
from keras.utils import np_utils
y_label_train_OneHot = np_utils.to_categorical(y_label_train)
y_label_test_OneHot = np_utils.to_categorical(y_label_test)
CNN建模
模型結(jié)構(gòu)
建立模型
from keras.models import Sequential
from keras.layers import Conv2D,MaxPooling2D,Dense,Dropout,Flatten
model = Sequential()
model.add(Conv2D(filters=32,kernel_size=(3,3),
input_shape=(32, 32,3),
activation='relu',
padding='same'))
model.add(Dropout(0.25))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(filters=64, kernel_size=(3, 3),
activation='relu', padding='same'))
model.add(Dropout(0.25))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dropout(rate=0.25))
model.add(Dense(1024, activation='relu'))
model.add(Dropout(rate=0.25))
model.add(Dense(10, activation='softmax'))
訓(xùn)練模型
model.compile(loss='categorical_crossentropy',
optimizer='adam', metrics=['accuracy'])
train_history = model.fit(x_img_train_normalize, y_label_train_OneHot,
validation_split=0.2,
epochs=10, batch_size=128, verbose=1)
模型預(yù)測
精度不是特別高,可以多做幾層卷積和池化吼拥。