スライドショー

【TensorFlow】MNISTデータを学習するプログラムを3種紹介!

今回は、TensorFlowで機械学習を始めたときに、私もつまづいたMNISTデータを学習するプログラムについて整理していきます。

TensorFlowでMNISTデータを学習するチュートリアルを探していると、何回かに1回、まったく違うチュートリアルが見つかって、あれ?と思うことがありますね。

「MNIST For ML Beginners」「Deep MNIST For Experts」「A Guide to TF Layers」がよく出現するチュートリアルだと思います。

そこで、この記事では、3つのチュートリアル記事を紹介し、各プログラムの実行時間accuracy(正確さ)をまとめてみます。

そもそも、TensorFlowとMNISTデータって何?という方は、以下の記事を参照してください。

【TensorFlow入門】機械学習フレームワークTensorFlowを学ぼう
更新日 : 2018年10月29日

MNISTデータを学習するプログラム3種を紹介

TensorFlowの公式サイトには、いくつかチュートリアル記事があります。

その中に、MNISTデータを学習するプログラムは3種類存在します。

  • MNIST For ML Beginners(mnist_softmax.py)
  • Deep MNIST For Experts(mnist_deep.py)
  • A Guide to TF Layers(cnn_mnist.py)

初めの頃は検索するたびに違うプログラムが見つかる印象があり、なんだか分かりにくいと感じていましたので、ここで3つのチュートリアル記事の特徴を整理して紹介したいと思います。

MNIST For ML Beginners(mnist_softmax.py)

mnist_softmax

参考:https://www.tensorflow.org/versions/r1.0/get_started/mnist/beginners

この記事は、TensorFlow 1.0用に書かれたチュートリアルです。

このチュートリアルで紹介しているプログラムでは、Softmax回帰を使う機械学習を実装しています。

1層のニューラルネットワークによる機械学習とも言えますね。

深層学習(Deep Learning)は、多層のニューラルネットワークによる機械学習手法ですので、mnist_softmax.pyは、深層学習のプログラムとは言えません。

mnist_softmax.pyについては、以下の記事でも解説していますので、ぜひご覧ください。

【TensorFlow入門】機械学習フレームワークTensorFlowを学ぼう
更新日 : 2018年10月29日

Deep MNIST For Experts(mnist_deep.py)

mnist_deep

参考:https://www.tensorflow.org/versions/r1.2/get_started/mnist/pros

この記事は、TensorFlow 1.2用に書かれたチュートリアルです。

このチュートリアルで紹介しているプログラムでは、多層畳み込みネットワーク(CNN:Convolutional Neural Network)を使う深層学習を実装しています。

mnist_deep.pyについては、この記事の後半で紹介します。

A Guide to TF Layers(cnn_mnist.py)

cnn_mnist

参考:https://www.tensorflow.org/versions/r1.5/tutorials/layers

この記事は、TensorFlow 1.5用に書かれたチュートリアルです。

このチュートリアルで紹介しているプログラムでは、mnist_deep.pyと同じ多層畳み込みネットワーク(CNN:Convolutional Neural Network)を使う深層学習を実装しています。

mnist_deep.pyとは異なり、TensorFlowの高レベルAPIであるEstimator APIを利用した実装です。

実行例は、以下の記事で紹介していますので、ぜひご覧ください。

【機械学習初心者必見】WindowsでTensorFlowを使っている画面を紹介!
更新日 : 2018年8月21日

Deep MNIST For Expertsを試してみよう

では、ここからはチュートリアルの1つである「Deep MNIST For Experts」を試してみましょう。

mnist_deep

参考:https://www.tensorflow.org/versions/r1.2/get_started/mnist/pros

まずは、以下のページから、mnist_deep.pyをダウンロードしてください。

参考:https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py

mnist_deep.pyを実行する

ダウンロードしたmnist_deep.pyは、Pythonのプログラムです。

ここでは、Anaconda NavigatorからGPU版TensorFlowをインストールしたPython環境を起動して、「D:\TensorFlow」フォルダに保存したmnist_deep.pyを実行する操作を説明します。

GPU版TensorFlowのインストール方法については、以下の記事をご覧ください。

【2019年度版】TensorFlow 1.5のインストール方法を解説!【Windows 10】
更新日 : 2019年7月17日

(1)Anaconda Navigatorを起動します。

(2)「Environment」をクリック後、「tensorflow-gpu」をクリックし、「mnist_03」をクリックして、「Open Terminal」をクリックします。

tens-use01

(3)「D:」と入力し、Enterキーを押します。

tens-use02

(4)「cd TensorFlow」と入力し、Enterキーを押します。

tens-use03

(5)「python mnist_deep.py」と入力し、Enterキーを押します。

mnist_01

step 20000になると終了です。

終了すると、以下のように表示されます。

mnist_02

accuracy(正確さ)に「0.9906」と表示されていますので、テストデータのうちの99%を正確に認識できたことがわかります。

3種のプログラムの性能を比較

この記事で紹介したチュートリアルのプログラムの性能を比較してみましょう。

チュートリアルMNIST For ML Beginners
(mnist_softmax.py)
Deep MNIST For Experts
(mnist_deep.py)
A Guide to TF Layers
(cnn_mnist.py)
TensorFlow対応バージョンTensorFlow 1.0TensorFlow 1.2TensorFlow 1.5
プログラム概要Softmax回帰を使う機械学習多層畳み込みネットワーク(CNN:Convolutional Neural Network)を使う深層学習多層畳み込みネットワーク(CNN:Convolutional Neural Network)を使う深層学習
Estimator API使用
実行時間約8秒約190秒約290秒
accuracy
(正確さ)
91.96%99.06%97%

実行時間については目安です。また、accuracyは、テストデータをどの程度正確に判定できたかを表す数値で、実行するたびに変わります。

mnist_deep.pyが最も正確に判定していますね。

まとめ

TensorFlowの公式サイトで紹介されているチュートリアルの中から、MNISTデータを学習するチュートリアルを選んで、比較してみました。

もちろんこれ以外にもMNISTデータを学習するプログラムは書けます。

層をさらに深くしてみたり、各関数を別のアルゴリズムに変更してみたり、実際に試してみて、実行時間や性能がどのように変化するか、試してみると、TensorFlowや機械学習についての理解が進むと思います。

また、TensorFlowの公式サイトでは、MNISTデータに限らず、ほかにも様々なタスクを処理するチュートリアルがありますので、気になるところを試してみてください!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説