【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を学ぼう
更新日 : 2020年5月21日

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を学ぼう
更新日 : 2020年5月21日

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を使っている画面を紹介!
更新日 : 2020年5月8日

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

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

侍テック編集部

侍テック編集部