kerasの写経をはじめてみよう

これからは人工知能の時代だ!ということで、kerasを始めます。

kerasとは何か?

Tensorflowという言葉を知っていますか?Googleの開発したAIのエンジンです。このTensorflowを簡単に使えるようにしたものがkerasとなります。他にも類似した仕組みはありますが、kerasは世界中で多くのユーザーが居るので、勉強がしやすいのです。

kerasをインストールしよう

jupiter notebookをインストールしてもkerasは入っていないので使うことができます。意外なことに、このことを書いてあるサイトが少ないのです。Anaconda Promptを起動して「pip install keras」と入力しましょう。そうでした、Tensorflowもインストールする必要がありますね。「pip install tensorflow」も忘れないでください。

pip install tensorflow
pip install keras

さっそく、写経しましょう

とりあえず、理論はいいので、サンプルコードを動かしてみましょう。

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

numpyが古いみたいで、エラーになってしまいました。エラーが出たときはAnaconda Pronptで「pip uninstall numpy」と「pip install numpy」を実行すれば解決です。アンインストール時は管理者権限で動かさないとエラーになることがあるので注意しましょう。

from keras.utils.np_utils import to_categorical

x_train = x_train.reshape(60000, 784)
x_test  = x_test.reshape(10000, 784)

x_train = x_train.astype('float32') / 255
y_test  = x_test.astype('float32')  / 255

y_train = to_categorical(y_train, 10)
y_test  = to_categorical(y_test , 10)

これが前処理だそうです。意味はあんまりよくわかりませんね。素材データは画像なので縦横のある二次元配列ですが、これを一次元配列に変換しています。そして、0~255の範囲に正規化している様子です。何の意味があるんでしょうね。最後はカテゴリ分類をしている様子が伺えます。

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(64, activation='relu', input_dim=784))
model.add(Dense(10, activation='softmax'))

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()

学習につかうニューラルネットワークを設計します。784次元のデータを64次元に減らして、それを10のカテゴリに分類しているネットワークと理解できるかと思います。難しいですよね。ちなみにこれは単純なニューラルネットワークであり、ディープラーニングではありません。この時点では、何の学習も行われていません。何か画面に出てきますが、これはネットワークの構造を表示しているものに過ぎません。

model.fit(x_train, y_train, batch_size=100, epochs=2, verbose=1)
score = model.evaluate(x_test, y_test)
print(score[0])
print(score[1])

このコードを実行すると、このニューラルネットワークに魂が入ります。最初の行が学習部分で、次の行が学習したモデルを使ってテストを行っている部分ですね。

むずかしいものですね。ありがとうございます。

参考サイト

脳死で覚えるkeras入門

 

システム開発

Posted by @erestage