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])
このコードを実行すると、このニューラルネットワークに魂が入ります。最初の行が学習部分で、次の行が学習したモデルを使ってテストを行っている部分ですね。
むずかしいものですね。ありがとうございます。
参考サイト