fbpx
共著書籍「データ分析の進め方 及び AI・機械学習の導入の指南」が出版されました

TensorFlowを使ってシンプルなニューラルネットワークモデルを作ってみる

TensorFlowを使ってシンプルなニューラルネットワークを作ってみる AI・機械学習・ディープラーニング
TensorFlowを使ってシンプルなニューラルネットワークを作ってみる

Tensorflowを使ってシンプルなニューラルネットワークの構築について簡単な説明をしてみます。データにMNISTデータを使います。

まず、Tensorflowをインストールしましょう。1

MNISTデータは、各画像のラベルがその画像内の実際の値を示す手書き数字の集合である。各画像は28×28ピクセルで、この配列を7842のベクトルに平坦化します。

まず、Tensorflowをインポートし、MNISTのデータをロードします。

import tensorflow as tf

from tensorflow.examples.tutorials.mnist import input_data
mnist= input_data.read_data_sets('MNIST_data',one_hot=True)

モデルにデータを渡すために、まず28×28イメージデータ用と、結果格納用に(0〜9)に1つずつ、Tensorflowプレースホルダを作成します。

X = tf.placeholder(tf.float32, shape=[None, 784]) 
Y = tf.placeholder(tf.float32, shape=[None, 10])

次に「重み」と「バイアス」用に変数を作成します。

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

モデルを訓練するときに役立つ、いくつかのパラメータを定義します。

batch_size = 100
learning_rate = 0.01
training_epochs = 10

モデルを宣言します。隠れ層のないシンプルなニューラルネットワークです。

y = tf.nn.softmax(tf.matmul(X,W) + b)

モデルを訓練するときの重要なポイントは、コスト関数です。 予測yと目標値Yに基づいて、クロスエントロピー誤差関数を使用します。

cross_entropy = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(y), reduction_indices=[1]))

パラメータの精度を計算します。

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(Y,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

勾配降下法を使用してモデルを訓練します。

train_model = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)

Tensorflowでセッションを開始すると、モデルに関連付けられた操作が実行されます。

セッションを作成したら、まず、すべてのTensorflowの変数を初期化する必要があります。初期化するには、セッションのrun()関数を実行します。

run()関数で演算を実行し、訓練データのバッチを作成して反復処理し、最後にモデルの精度を出力します。

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    
    for epoch in range(training_epochs) :
        batch_count = int(mnist.train.num_examples/batch_size)
        
        for i in range(batch_count):
            batch_x, batch_y = mnist.train.next_batch(batch_size)
            
            sess.run([train_model], feed_dict={X: batch_x, Y: batch_y})
    print "Accuracy: ", accuracy.eval(session = sess ,feed_dict={X: mnist.test.images, Y: mnist.test.labels})

Accuracy: 0.9033

この単純なモデルでは、約90%の精度が出ました。

以下、全体のコードになります。

以前の記事「機械学習初心者のためのMNIST(翻訳)」に、Google本家サイトのドキュメントを翻訳していますので、詳細はそちらもご覧ください。


  1. インストールについては、様々なページで説明されているので、ここでは割愛します

  2. 28*28

【ロカラボからのお知らせ】
自社事業にAIを活用しようとする前にこれだけは押さえておいてください。

【無料ダウンロード】成功するAIプロジェクトに共通する3つの最重要ポイント

事業でAIを活用する企業様が多くなってきました。
弊社でも主に製造業・医療業を中心にAIシステムの開発や導入支援をおこなってきました。

その中で見えてきた、成功するAIプロジェクトに共通する最重要ポイントをまとめたPDFファイルを無料で配布しています。

AI導入プロジェクトをスタートする際には是非ご参考にいただけたらと思います。
こちらのページからダウンロードしてください。

AI・機械学習・ディープラーニング
ロカラボをフォローする
タイトルとURLをコピーしました