KOROの考察

いろんなことを徒然なるままに記載していきます

Kerasのメモ(直観 DeepLearning) 勉強1日目

Kerasを使用する際のメモ

これは「直観DeepLearning」を勉強する際の自分用メモ
本に書こうと思ったけど、量が多いのでここにまとめる
どこまで続くかな?
ついでに練習のためMarkDownで記述する。

from __future__ import print_function

Python3系でPython2系の機能を使用する用


from keras.datasets import mnist

kerasでmnistを使用するため用


from keras.model import Sequential
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
from keras.utils import np_utils

必要なライブラリ群をimport


np.random.seed()

randomで乱数、seedをつけるとシード値を設定可能 マインクラフトのシード値と同じ概念で、乱数の値を固定できる


NB_EPOCH = 200
BATCH_SIZE = 128
VERBOSE = 1
NB_CLASSES = 10
OPTIMIZER = SGD()
N_HIDDEN = 128
VALIDATION_SPLIT = 0.2

モデルの初期設定。上から
エポック
ミニバッチ学習のバッチサイズ
verbose(多弁なという意味)kerasでは詳細表示設定、ログ表示をするかの設定
0:何も表示しない 1:バーで表示 2:エポック毎に表示(今回の場合は200個)
NB_CLASSES:one hot encodingの設定、1つだけ1、それ以外は0にすることで機械が学習しやすいデータにしてくれる。今回は0~9の10文字の画像なので10にする
OPTIMIZER:パラメータの最適化(optimize)方法 今回はSGD(確率勾配降下法)を設定
N_HIDDEN:
VALIDATION_SPLIT:訓練データと検証データの分割の設定0~1で表記、0.2だとデータの最後20%が検証データになる。(データはシャッフルされないので、そのままデータの最後20%のみが対象)

(X_train, y_train), (X_test, y_test) = mnist.load_data()
RESHAPED = 784
X_train = X_train.reshape(60000, RESHAPED)
X_test = X_test.reshape(10000, RESHAPED)
X_train =  X_train.astype('float32')
X_test = X_test.astype('float32')

レーニングデータのロード、RESHAPEDは1次元への変換
今回のデータは画像データ60000枚、28×28となる
画像データは2次元配列のままなので、1次元配列(784)にRESHAPEDするらしい
データをfloat32の型に変換しているのは、GPUを使用するときに変換する必要があるらしい(これは今度調べる)

そろそろ腱鞘炎になりそう・・

X_train /= 255
X_test /= 255
print(X_train.shape[0], 'train samples')
print(X_test.shape[0],'test samples')

上2行は正規化、画像はピクセルで0~255の値を取るので、それを0~1の範囲にする

Y_train = np_utils.to_categorical(y_train, NB_CLASSES)
Y_test = np_utils.to_categorical(y_test, NB_CLASSES)

これは2行は評価データのベクトル化、、らしい(これは今度調べる)

model = Sequential()
model.add(Dense(NB_CLASSES, input_shape=(RESHAPED,)))
model.add(Activation('softmax'))
model.summary()

ここでモデルの設定、ネットワークの作成をしている

とりあえず今日はここまで。
これ書きながらだと非常に時間がかかるので、やり方を変えよう
次はモデルのコンパイル、と実行