Help us understand the problem. What is going on with this article?

MaruLabo × TFUG 資料 (古川新)

More than 1 year has passed since last update.

MaruLabo × TFUG 資料 (古川新)

by ornew
1 / 22

本日はハンズオンですが…


ソースコードは書かせません!


時間が足りない

実際に書くのはただの作業。コピペだっていいんです。

今日は「クラウドでの動かし方」と「プログラムの雰囲気」、を知る

そして「実際に体験する」ことを目的とします。
今日は、そのためのサンプルを用意しましたので、動かしてみましょう。


サンプルアプリのインストール

# ダウンロード
cd ~
wget https://github.com/ornew/mnist-visual/releases/download/v2.1.2/mnist-visualize-example_2.1.2.tar.gz

# 展開
tar zxvf mnist-visualize-example_2.1.2.tar.gz
cd ~/mnist-visualize-example_2.1.2/

# 起動
sudo python server.py -p 80

このアプリについて

このアプリは、TensorFlowチュートリアル「Deep MNIST for Experts」(原文翻訳)のMNISTモデルの学習状況をブラウザで閲覧できるようにしたものです。


  • サーバを起動したのち、GCEインスタンスのIPアドレスにブラウザでアクセスしてください。
  • Chrome,FireFox,Safariで動作を確認しています。

ブラウザでアクセスしたら「訓練を開始する」というボタンを押してください。少し待っているとテスト結果が表示され始めます。

学習がどうやって進んでいくのかを観察してみてください。


テスト結果の見方

  • 緑→テストで正解したもの
  • 赤→テストで間違えたもの

スクリーンショット 2017-01-16 13.59.17.2.png


  • どの数字とどの数字を間違えやすいでしょうか。
  • 間違いが正解に直ったり、逆に一度正解したものを間違えたり、なかなかうまくいかない文字が見えてくると思います。

参考:100ステップ目

スクリーンショット 2017-01-16 13.59.17.png


参考:1000ステップ目

スクリーンショット 2017-01-16 13.59.27.png


参考:20000ステップ目

スクリーンショット 2017-01-16 15.34.28.png


TensorBoardの起動

tensorboard --logdir ~/mnist-visualize-example_2.1.2/var --noinspect &

バックグラウンドで実行しておくと、GCEインスタンスのIPアドレスの6006番ポートにアクセスするとTensorBoardにアクセスできます。


クロスエントロピーの推移

スクリーンショット 2017-01-16 19.00.18.png

誤差が小さくなっているのがわかります
「なんとなく改善している」を示すデータ


誤差評価

計算で出した確率分布と本当の答えがどのくらい間違ってるのか(裏を返せばどのくらい正しいのか)をクロスエントロピーで示している

cross_entropy = tf.reduce_mean(
  tf.nn.softmax_cross_entropy_with_logits(
    inference, # 予測された値
    label))    # 正解の値

誤差をどうやって小さくしている?

ディープラーニングでは、この誤差が小さくなるようにモデルを訓練をしていくのが一般的です。

tf.train.AdamOptimizer(1e-4)
  .minimize(cross_entropy)

このサンプルでは、この一行ですべてやってくれます。理論を知らなくても、TensorFlowに組み込みのオプティマイザを使うことができます。


ソースコードの説明


もう一つのサンプル

実際に手書きをして、答えを表示するサンプルです。
スクリーンショット 2017-01-16 19.36.41.png


たぶん時間がないので、自宅で試してみてください。(下田さんのスライドで行ったセットアップが前提です)

# アプリをダウンロード
wget https://github.com/ornew/mnist-visual/releases/download/v1.0.2/mnist-visualize-example_1.0.2.tar.gz
tar zxf mnist-visualize-example_1.0.2.tar.gz
cd ~/mnist-visualize-example_1.0.2/

# 学習(16コアで20分くらい)
python train.py -v

# 学習が終わったらサーバを起動
sudo python server.py -p 80

このアプリでは、下のシークバーをいじると学習率を1000ステップ単位で変更できます。

最大は、先程見た99.2%の正答率を誇る20000ステップです。

しかし、実際に試してみると、20000ステップのものでも正しく回答できない数字や、苦手な崩れ方があることに気づくと思います。下に確率分布も表示されているので、どの数字と迷っているのかもわかります。


なぜその数字を間違えるのでしょう?

数字でない文字を入力した場合はどうなるでしょう?

人間でも判断が難しい数字をどうやったら判断できるようになるでしょう?

TensorFlowを書くのは簡単です。問題は、あなたが手を動かすかどうかです。そこからが本当のハンズオンです。


手を動かせば、TensorFlowはなんでもできる魔法の杖ではなく、鉛筆でしかないことに気づくと思います。

そして、TensorFlowが素晴らしく効率の良い鉛筆であることにきっと気づくでしょう。

自分で手を動かしましょう。今回のイベントがそのきっかけになってくれればと思います。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away