深さ学習|Keras識別CIFAR-10画像(CNN)

1980 ワード

データとメソッド


CIFAR-10データセットは6000個32×32個のカラーピクチャ、50000個のトレーニングピクチャ、10000個のテストピクチャ.飛行機、自動車、鳥、猫、鹿、犬、カエル、馬、船、トラックの10種類があります.

データのダウンロードと処理


データのダウンロード
Kerasはすでにモジュールを提供してデータをダウンロードして、コードを通じてダウンロードを完成することができます.
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()

データしょり
  • 標準化
  • 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モデリング


    モデルこうぞう
    モデルの作成
    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'))
    

    トレーニングモデル
    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) 
    

    モデル予測
    精度は特に高くなく、何層ものボリュームとプール化ができます.