ニューラルネットワークをやる
こんにちは!
ぷもんです。
前回のtrain_test_split関数ってなんや?というnoteの続きです。
機械学習で学習させるためのデータと
その学習がうまくいったかを確かめるテストをするためのデータに
分ける「train_test_split関数」について書きました。
今回はニューラルネットワークの作り方を中心に書きます。
まず、次のような操作をします。
import tensorflow as tf
import keras
from keras.layers import Dense,Activation
ここではtensorflowとkerasをインポートし
kerasのレイヤーからDenseとActivationをインポートしています。
tensorflow、kerasとはなんなのでしょうか?
kerasはニューラルネットワークライブラリというもので
簡易なコードで構築も容易に使えるのが特徴です。
tensorflowとはGoogleがつくったオープンソースで
kerasのバックエンドエンジンとして機能します。
バックエンドエンジンとは最適化した処理を裏でやってくれるもので
kerasが窓口みたいなものでtensorflowが奥にいる感じなのかな
と理解しました。
続いて、DenseとActivationについてですが
ニューラルネットワークの説明をした方が早いと思います。
ニューラルネットワークのイメージを掴むには
こちらのサイトが分かり易かったです。
これは先ほどのサイトからお借りしたもので
ニューラルネットワークで様々な特徴量から
猫の特徴を判別するニューロンを作り猫を識別しているのがわかります。
このようなニューラルネットワークを発展させたものがディープラーニングで
ディープラーニングによって今のAIブームに火がつきました。
先ほどのサイトでニューラルネットワークのイメージを掴みましたが
プログラムに落とし込んだ説明で分かり易かったのがこのサイトです。
こちらは上のサイトからお借りしたものです。
上の図の入力層、隠れ層(=中間層)、出力層をつくるのがDenseで
関数を決めるのがActivationです。
こちらのコードでは入力層、中間層、出力層で構成されるモデルを作っています。
model = keras.models.Sequential()
model.add(Dense(units=32,input_dim=4))
model.add(Activation('relu'))
model.add(Dense(units=3))
model.add(Activation('softmax'))
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
1行目でSequential「線形の」の意味の通り層が続く形を作ります。
2行目でunits(=中間層)が32、input_dim(=入力層)が4にします。
3行目で中間層にReLU関数を入れます。
4行目でunits(=出力層)が3にします。
5行目で出力層にソフトマックス関数を入れます。
6行目でコンパイルしています。
ReLU関数、ソフトマックス関数については
どういう意味があるのか理解しきれていないところもまだ多いので
さらに勉強してからまとめます。
コンパイルとはプログラミング言語で書かれた文字列(ソースコード)を、コンピュータ上で実行可能な形式(オブジェクトコード)に変換することらしいのですが
こちらも理解できている気がしないのでもう少し勉強します。
今回はニューラルネットワークのつくり方を中心に書きました。
めっちゃむずかった...。
参考にしたサイトです。
最後まで読んでいただきありがとうございました。
ぷもんでした!