FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


KerasでCNNを使ったMNIST

KerasでCNNを使おうと思うのでまずはお決まりのMNISTやってみた。

KerasをMacにインストール
↑前に全結合層でやってみたのでCNNを使うように修正するだけ。
なお、深い意味はないけどSequentialモデルではなくModelクラス(functional API)を使ってる。
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(60000, 28,28,1)
x_test = x_test.reshape(10000, 28,28,1)
#略

#モデルの作成
x = Input(shape=(28,28,1,))
layer1 = Conv2D(32, (5,5), padding='same', activation='relu')(x)
layer2 = MaxPooling2D(pool_size=(2, 2), padding='same')(layer1)
layer3 = Conv2D(64, (5,5), padding='same', activation='relu')(layer2)
layer4 = MaxPooling2D(pool_size=(2, 2), padding='same')(layer3)
layer5 = Flatten()(layer4)
layer6 = Dense(1024, activation='relu')(layer5)
layer7 = Dropout(0.2)(layer6)
y_pred = Dense(10, activation='softmax')(layer7)

model = Model( inputs=x , outputs=y_pred)
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(),
              metrics=['accuracy'])
最初の方でデータの次元を合わせるってことで28x28x1にreshapeしてる。
層の構成はTensorFlowの例題と合わせたつもり。

Deep MNISTのネットワーク構成のサマリー

↑サマリー。Kerasが出してくれるこのサマリーはホントいい勉強になるわ。

学習結果

↑数エポック学習後。テストデータに対して99.03%とのこと。


ここまで書いてたんだけど、、、
係数をMetal Performance Shaderで使うために保存しようとしたら上のコードだと保存できない(?)ようで、結局下のようなSequentialモデルに書き直しました。😝
model = Sequential()
layer1 = Conv2D(32, (5,5), padding='same', activation='relu' , input_shape=(28,28,1,) )
layer2 = MaxPooling2D(pool_size=(2, 2), padding='same')
layer3 = Conv2D(64, (5,5), padding='same', activation='relu')
layer4 = MaxPooling2D(pool_size=(2, 2), padding='same')
layer5 = Flatten()
layer6 = Dense(1024, activation='relu')
layer7 = Dropout(0.2)
y_pred = Dense(10, activation='softmax')

model.add(layer1)
model.add(layer2)
model.add(layer3)
model.add(layer4)
model.add(layer5)
model.add(layer6)
model.add(layer7)
model.add(y_pred)
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(),
              metrics=['accuracy'])

<< macOSで画像の輝度データを得る  TopPage  貝塚市の渓流園地にBBQへ行ってきた >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1207-f8f5e27a




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad