畳み込みニューラルネットワーク(CNN)サンプルコード – Colaboratory・Keras・MNIST

MNISTデータセットで数字画像認識 | 基本的なCNNサンプルコード – Colaboratory・Keras・MNIST

 

Google ColaboratoryでKerasを使ってMNISTの数字画像認識用に、ディープラーニング(深層学習)でおなじみの「畳み込みニューラルネットワーク」(CNN:Convolutional Neural Network)を構築してみました。

* Keras:Pythonで書かれているTensorFlow上などで実行可能な高水準のニューラルネットワークライブラリ

 

まだ、機械学習プログラミングについて、よくわからないけどとりあえず自分で動かしてみたい!

と考えている方の参考になることがありましたら幸いです。

今回のサンプルコードは、プログラムの内容についてあまり解説をしていませんが、今後、解説版も動画などで公開予定です。
お楽しみに♪

 

【追記:2019年10月15日】

解説記事を作成しました。コードの理解にお役立てください。

【コード解説】畳み込みニューラルネットワーク(CNN)サンプルコード – Colaboratory・Keras・MNIST

 





 

人工知能(AI)プログラミング用サンプルコード・サンプルソース

 

 

実行環境 – Google Colaboratory

Google Colaboratory用のサンプルコードリンク

program-Keras-cnn-basic.ipynb | Google Colaboratory共有リンク

 

【とりあえず動かすサンプルコード】CNN:畳み込みニューラルネットワーク(解説なし版:動画)

視聴時間:56秒

サンプルコードの動かし方がわからない方は、参考にしてみてください。
Google Colaboratoryでプログラムを実行する際には、Googleアカウントが必要です。GPUも無料で使えるのでありがたいですね。

 

***以下:サンプルコード***

 

#ライブラリのインポートなど
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Dense, Dropout, Flatten
from keras.optimizers import Adam
import time

#画像データの読み込みと、データ形式の設定・正規化
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
x_train = x_train.astype('float32')/255
x_test = x_test.astype('float32')/255

#ラベルデータをOne-hotベクトルに変更
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

#機械学習(人工知能)モデルの作成
#「Conv2D」を使ってディープラーニング技術でおなじみの「畳み込みニューラルネットワーク」(CNN)を実装
model = Sequential()
model.add(Conv2D(16, (3, 3), padding='same',
input_shape=(28, 28, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(Conv2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(10, activation='softmax'))

#損失関数・最適化関数・評価関数などを指定してモデルをコンパイル
model.compile(loss='categorical_crossentropy',
optimizer=Adam(),
metrics=['accuracy'])

#処理を始めた時間
start_time = time.time()

#学習の実行
history = model.fit(x_train, y_train, batch_size=1024, epochs=20,
verbose=1, validation_data=(x_test, y_test))

#モデルの評価
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
print('Computation time:{0:.3f} sec'.format(time.time() - start_time))

 

***終わり:サンプルコード***

 




 

by 子供こどもプログラマー | プログラミング入門にゅうもんウェブ教室きょうしつ