TensorFlowを
触ってみたよ!
2015/12/26 TensorFlow勉強会LT
GDG神戸 野田悟志
GDG神戸 2015年開催イベント
2015/2/21 Go on Android ハンズオン&もくもく会
2015/4/29 Angular勉強会#3
2015/5/23 GDG神戸 初級〜中級者向け Android勉強会
2015/5/28 I/O Extended 2015 Kobe
2015/6/20 GDG DevFest Japan Summer 2015 in Kyoto(共催)
2015/7/18 AndroidWearハッカソン
2015/7/25 WebMusicハッカソン(共催)
2015/8/22 AndroidTVハンズオン勉強会
2015/9/19 Cardboardハンズオン勉強会(共催)
2015/9/20 Polymerコードラボ
2015/10/11 GDG DevFest Kobe Firebaseハンズオン勉強会
2015/11/7 ちょっとさわってみる Go言語ハンズオン
2015/11/14 Android6.0 Marshmallow勉強会
2015/12/26 TensorFlow勉強会
2015/12/28 GDG神戸 2015年忘年会
環境
● OS
○ Windows10 64bit
● CPU
○ Core i7-3770 4-Core 3.4GHz (Turbo 3.9GHz, HT 8Thread)
● GPU
○ なし
● Memory
○ 32GB
● HDD
環境
Windows(※)なので、Dockerを使用
DockerVM(VirtualBox)
● CPU
○ 4コア(4Thread)
● Memory
○ 16GB
※BazelがWindowsをサポートしていないため。Bazelは2016/02頃にサポート予定
TensorBoard
TensorBoardでグラフとかを見れるようにしておきたい
グラフを作成するにはSummaryWriterでログを出力している必要がある
tutorialsの手書き数字認識でfully_connected_feed.pyではログを出力して
いたので、とりあえずこれで確認してみる(TensorFlow Mechanics 101)
TensorBoard
Dockerを使用しているので、コンテナ作成時に、TensorBoardが使用している6006を
ホストマシンにつないでおく必要がある
$ docker run -dit -p 6006:6006 b.gcr.io/tensorflow/tensorflow
PORT
0.0.0.0:6006->6006/tcp, 8888/tcp
docker psで下のような感じで6006と8888が出てればOK
TensorBoard
$ docker run -dit -p 6006:6006 -p 8888 -p 8000 
b.gcr.io/tensorflow/tensorflow
もしダメなら、8888と8000もつなげておけばOK
-dit インタラクティブターミナルでdaemonとして起動する
6006 TensorBoard用のポート
8888 ipython notebook用のポート
8000 Webアプリケーション用のポート ※これが必要な場合があるかも?
参考:Tensorflow: How to setup Tensorboard for Windows / Docker installation
https://youtu.be/Wwnj8NayOcQ
TensorBoard
docker psでコンテナIDを確認して、attachする
$ docker ps
$ docker attach [container id]
$ apt-get update
$ apt-get install git
$ apt-get install vim
とりあえずgitが必要
好きなテキストエディタも入れとけば楽
TensorBoard
githubからtensorflowをclone
$ git clone --recurse-submodules 
https://github.com/tensorflow/tensorflow
$ cd tensorflow/examples/tutorials/mnist
$ python fully_connected_feed.py
fully_connected_feed.pyを実行
TensorBoard
ちなみに4コア(4Thread)割り当ててるので、以下の文言が出てくる
Local device intra op parallelism threads: 4
Direct session inter op parallelism threads: 4
summaryで出力したログのディレクトリ(data)を指定する(絶対パスの方が良いみた
い.ここではrootのtensorflow以下にクローンしたので、こんなパス)
$ tensorboard 
--logdir=/root/tensorflow/ 
tensorflow/examples/tutorials/mnist/data
http://192.168.99.100:6006 にアクセスする(IPはVBoxのデフォルト値)
TensorBoard
TensorBoard
TensorBoardはCtrl+Cで止まる
dockerからはCtrl+P+Qで抜ける(detach)
Convolutional Neural Networks
CIFAR-10とは、一般物体認識のベンチマークとしてよく使われている画像データセット
約8000万枚の画像がある「80 Million Tiny Images」からサブセットとして約6万
枚の画像を抽出してラベル付けしたデータセット
Convolutional Neural Networks
とりあえず何も考えずに実行してみる
$ cd tensorflow/models/image/cifar10
$ python cifar10_train.py
Convolutional Neural Networks
6時間経過
Convolutional Neural Networks
PCの電源を切らないでください!
Convolutional Neural Networks
Windows10 TH2で、コルタナさんが無事我が家にやってきました
とりあえずcheck pointは作成しているし、ログは出力されていたけど、もう一度やり直
した
Convolutional Neural Networks
1日(24時間)経過
Convolutional Neural Networks
1日で18万Stepくらい
ソースをちゃんと見てみると、100万Stepある
この調子だと、終わるまで大体6日(144時間)はかかる
今年中には終わりそう…(現在進行中)
CPUはがっつり
4Thread使ってる
追加出来たとして
も、あと2Threadく
らいなので、やはり
GPUが欲しいところ
メモリはたったの7G
程度(20%)しか
使っていない
もっとメモリ使ってく
れれば、もう少し高
速化できそう
データセットの読み
込みでディスクアク
セス(3KB/秒)が
発生している
効果はあまりない
かもしれないけど、
SSDにしたら少しは
速くなるかも
Vector Representations of Words
自然言語処理
人が日常的に使っている言葉をコンピュータに処理させるもの
Word2Vec
単語をベクトル化して表現するする定量化手法
「同じ文脈の中にある単語はお互いに近い意味を持っている」というシンプルな考え方
論文:「Efficient Estimation of Word Representations in Vector Space」
http://arxiv.org/pdf/1301.3781v3.pdf
Vector Representations of Words
Vector Representations of Words
今回は先にどれくらいかかりそうかソースを見てみると、15Epochで終わるみたい
とりあえず実行してみる
まずは訓練データセット(text8.zip)と評価データ(questions-words.txt)を取
得し、訓練データセットはzipファイルなので解凍する
$ apt-get install wget
$ apt-get install unzip
$ cd tensorflow/models/embedding
$ wget http://mattmahoney.net/dc/text8.zip -O text8.zip
$ unzip text8.zip
$ wget 
https://word2vec.googlecode.com/svn/trunk/questions-words.txt
Vector Representations of Words
check pointとログファイルの出力先を作成しておく
word2vec.py実行時に、train_dataに訓練データセット、eval_dataに評価デー
タ、save_pathにcheck pointとログファイルの出力先を指定する
$ mkdir /tmp/word2vec
$ python word2vec.py --train_data=text8 
--eval_data=questions-words.txt --save_path=/tmp/word2vec
Vector Representations of Words
開始時にword2vec_kernels.ccが訓練データセットの中身をチェックしているみた
い。1700万単語存在している様子
Data file: text8 contains 100000000 bytes, 17005207 words,
253854 unique words, 71290 unique frequent words.
Vector Representations of Words
6時間経過
Vector Representations of Words
突然PCがフリーズ
Vector Representations of Words
数時間放置してたら
復旧した!
Vector Representations of Words
精度は3割くらい
時間は14時間くらいかかってた(word2vec_optimized.pyの方だとそれよりも早
いっぽい。未確認)
論文のAbstractでは「16億単語から高品質な単語ベクトルを学習するのに1日かから
ない」とあるので、それくらいの単語数はいるのかも?
TensorFlowを触ってみたまとめ
● メモリはそんなに使わない
● GPUは欲しい
● Bazelはよ ※Windows対応
● ソース読め
● 6時間後に何か起こる
TensorFlowを触ってみたよ!
ご清聴ありがとうございました!

TensorFlowを触ってみたよ!