ML using Tensorflow supported by keras(MNIST)

In [1]: import tensorflow as tf

In [2]: from keras.layers import Dropout
Using TensorFlow backend.

In [3]: from keras import backend as K

In [4]: from keras.layers import Dense

In [5]: from keras.objectives import categorical_crossentropy

In [6]: from tensorflow.examples.tutorials.mnist import input_data

まずは名前空間に必要なモジュールを例のごとくインポートしていく。

In [7]: sess = tf.Session()

In [8]: K.set_session(sess)

tensorflowのセッションスタート、さらにkerasにおいてもセッションを開始する。

In [9]: img = tf.placeholder(tf.float32,shape=(None,784))

In [10]: labels = tf.placeholder(tf.float32, shape=(None, 10))

続いて画像データ・ラベルを格納するためのプレースホルダを設定し

In [11]: x = Dense(128, activation=’relu’)(img)

In [12]: x = Dropout(0.5)(x)

In [13]: x = Dense(128, activation=’relu’)(x)

In [14]: x = Dropout(0.5)(x)

In [15]: preds = Dense(10, activation=’softmax’)(x)

kerasにより、中間層の活性化関数がrelu,出力層直前の活性化関数がsoftmax関数である多層CNNを構築する。

In [16]: loss = tf.reduce_mean(categorical_crossentropy(labels, preds))

トレーニングセットのラベルと、CNNが出力する判定結果との交差エントロピーの誤差関数を定義し、

In [17]: mnist_data = input_data.read_data_sets(‘MNIST_data’, one_hot=True)

MNISTのデータセットをone hotベクトル形式でダウンロードする。

In [18]: train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss) 

ついで最急降下法によって定義した誤差関数を最適化し、

In [19]: with sess.as_default():
….: for i in range(100):
….: batch = mnist_data.train.next_batch(50)
….: train_step.run(feed_dict={img: batch[0],
….: labels: batch[1],
….: K.learning_phase(): 1})

セッションのデフォルト値を上のように定める。

batch[0]は画像データ(vector)、batch[1]はデータラベル(int)である。(多分)

K.learning_phaseを1として、CNNがトレーニング段階であることを指定する。

In [21]: from keras.metrics import categorical_accuracy as accuracy

In [22]: acc_value = accuracy(labels, preds)

kerasよりaccuracy()関数を呼び出し、未知データの真のデータラベルがpreds(predictions)と一致している比率を計算しうるオブジェクトを生成。

In [24]: with sess.as_default():
….: print acc_value.eval(feed_dict={img: mnist_data.test.images,
….: labels: mnist_data.test.labels,
….: K.learning_phase(): 0})

最後にテスティングセットをimg,labelsに設定してセッション開始。

結果

0.8526

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s