Keras/Tensorflowを使ってCIFAR10の画像認識に挑戦。
PC上で動かすには畳み込み層4つぐらいに抑えたい、あまり大きくないネットワークやパラメータ数でなんとか80%以上に認識率達成出来ないか?
過学習傾向強く、画像拡張とドロップアウトを適度に入れ込む必要ある。
3日間苦戦後、画像拡張とドロップアウトで過学習傾向から脱却出来た。以下のネットワークではどうか?train_dataとval_data両方ともEpoch=80で75%以上に到達。まだまだ認識率向上できそうなので、明日は、Colab使ってEpoch=300でやってみよう。
model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3))) model.add(layers.BatchNormalization()) model.add(layers.Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3))) model.add(layers.BatchNormalization()) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Dropout(0.1)) model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same')) model.add(layers.BatchNormalization()) model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same')) model.add(layers.BatchNormalization()) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Dropout(0.2)) model.add(layers.Flatten()) model.add(layers.Dense(128, activation='relu')) model.add(layers.BatchNormalization()) model.add(layers.Dropout(0.3)) model.add(layers.Dense(10, activation='softmax'))