"機械学習","信号解析","ディープラーニング"の勉強

HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学などをテーマに扱っていきます

【API,サンプルコード,使い方】TensorFlowの参考リンク、記事まとめ

 

 

f:id:s0sem0y:20170704010501p:plain

 

はじめに

最近はChainerからTensorFlowに移りつつあります。

 

Chainerがバッチ正規化でcudnnに関するエラーを吐くようになり(これはCUDA8.0の7.5へのダウングレードで何とかなりそうだけど)、更にPyTorchが数カ月でChainerを越える圧倒的なgithubのスター数を獲得してしまったため、気分が上がらなかったという誠にいい加減な理由です(動的グラフやりたいならPyTorchの方が既に勢いがあるので、こだわる必要が無くなってしまった)。

 

まあ、そんなこんなでTensorFlow1.2になったタイミングでChainerから移行を開始しました。そこで色々と参考になる記事を見つけたため、自分のメモ用にも残しておきます。

 

記事まとめ

TensorFlow1.2.0の変更点

箇条書きで変更点が掲載されています。

APIの変更もあったようです。従来より使っていた人は確認した方が良いでしょう(既にしてるか?)。

qiita.com

 

 

IntelによるCPUの最適化

ディープラーニングといえばGPUの利用が欠かせませんが、この現状に老舗CPU会社も黙ってはいないようです。TensorFlowのためにCPUの最適化を試みたようです。ベンチマークがXeonだったので、ハイエンド向けなのでしょうか。Core iXシリーズへの影響はよく分かりません。

 

software.intel.com

 

以下インストールの手順。

Building and Installing TensorFlow with CPU Optimizations

  1. Run "./configure" from the TensorFlow source directory, and it will download latest Intel MKL for machine learning automatically in tensorflow/third_party/mkl/mklml if you select the options to use Intel MKL.
  2. Execute the following commands to create a pip package that can be used to install the optimized TensorFlow build.
    • PATH can be changed to point to a specific version of GCC compiler:
      export PATH=/PATH/gcc/bin:$PATH
    • LD_LIBRARY_PATH can also be changed to point to new GLIBC :
      export LD_LIBRARY_PATH=/PATH/gcc/lib64:$LD_LIBRARY_PATH.
    • Build for best performance on Intel Xeon and Intel Xeon Phi processors:
      bazel build --config=mkl --copt=”-DEIGEN_USE_VML” -c opt //tensorflow/tools/pip_package:
      build_pip_package
  3. Install the optimized TensorFlow wheel
    1. bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/path_to_save_wheel
      pip install --upgrade --user ~/path_to_save_wheel /wheel_name.whl

 

 

LearningTensorFlow.com

以下のサイトに丁寧なチュートリアルがあります。難易度は高くなく、高度なことは載っていません。しかしだからこそ入門するのは公式ドキュメントを使うよりも良いかもしれませんね。こういうサイトがサードパーティから出てくるのがTensorFlowのコミュニティの強さだと思います。

 

Learning TensorFlow ::

 

 

Jupyter Notebookで書かれたチュートリアル

ここの11個のNotebookを眺めていくか写経していけば、TensorFlowの使い方が学べると思います。TensorFlowの使い方から、基本的な回帰、自己符号化器などを扱いつつVAEまで行きます。

 

github.com

 

 

いろんなチュートリアルやモデルのまとめ

上記で紹介したチュートリアルも含め、様々なチュートリアルがまとめてあります。TensorFlowがどれだけ世の中で使われているのか絶望的な差を感じました。

 

github.com

 

Machine Learning with Tensorflowのサポートサイト

 

tensorflowbook.com

 

には以下の書籍で用いられているサンプルコードなどが載っています。コードは勿論のこと、Jupyter Notebookで実行しながら軽く解説も入っています(もちろん全部解説してたら本の意味ないので、本当に軽く)。

Machine Learning With Tensorflow

Machine Learning With Tensorflow

 

 

TensorFlowを使ったディープラーニングの解説動画

ディープラーニングの基本的手法について解説しながら、その場でTensorflowによるプログラムの実行をしていきます。英語がある程度分かっていて、かつ数式に少しでも齧りつけるのであれば分かる内容だと思います。

 

www.youtube.com

 

 

ディープラーニング以外の実装

以下は隠れマルコフモデルのTensorFlowによる実装。TensorFlowが純粋に計算グラフによるデータ処理の実装ライブラリであることが実感できる。(Deeplearningは一応用である)

github.com

 

ただ、上記の実装は実は隠れてないマルコフモデルであって、要するにマルコフモデルでした。(なんか言語処理では、普通のマルコフモデルを隠れマルコフモデルっていう風潮あるらしい。まあそういうものなのだろう)。

 

 

TensorFlowのHigh-Level API集

tflearn

結構使っている人見ますね。

github.com

 

TensorFlow-Slim

確率プログラミングライブラリedwardではこれが使われてました。その時初めて知った。

github.com

 

Keras

言わずとしれたKerasです。

 

Keras Documentation

 

TensorFlow1.2.0からは(恐らく)Kerasと全く同等のモジュールが同梱されるようになったため、インポートすればKerasを別途インストールしなくても使えるようになりました。

 

本家Kerasの方はTensorFlowだけでなくTheanoやCNTKなど、マルチに動くように開発が進んでいくようです。

 

Sonnet

Googleが抱えるディープラーニングの論文生産集団Deepmindが社内で使っているライブラリです。Python2系のみの対応です。

github.com

 

s0sem0y.hatenablog.com

 

tensorpack

全く知らない!学習速度が良いらしい。

github.com

 

 

所感

TensorFlow強すぎ

コミュニティの充実具合にびっくりしました。TensorFlowに本格的に集中しようと決めて、初めて本当の力に気づいた気がします。これは確かに雪だるま式に人が増えますね。ブログやGithubなどTensorFlowについて解説しているページがウェブ上にたくさん転がっています。

 

英語さえ許容すれば、いつでも本格的に勉強できる環境が整っていると言えるでしょう。

 

脅威のライブラリ達

Kerasはもちろん有名ですし、Sonnetも一度記事ですぐに取り上げました。しかし、他にもどうやらたくさんラッパーはあるみたいですね(ここは共有する上でも、1つに固まって欲しい気もしますが)。

 

ただ当然ライブラリ毎に粒度が違う感じはするので、ケースバイケースではあります。

 

すぐに簡易的に実装を行いたい場合はKerasですし、詳細に一から書いていくならTensorFlowを生で使うことになります。処理を自分で書きつつも、ニューラルネットの記述自体は楽にできるという感じなのがSonnetでしょう。SlimやTFLearnは若干Kerasと被り気味の気もします。

 

Jupyter Notebookは素晴らしい

いろいろなチュートリアルがJupyterNotebookで公開されています。別に自分が使わなくてもチュートリアルを実行していくことはできるのですが、やはり結果をその場で確認しながらコードを書いていけるのは便利です。

 

JupyterNotebookを更に便利にしたJupyterLabの開発にも注目していきたいです。

 

s0sem0y.hatenablog.com

 

 

以下はJupyter Notebookを使ってデータサイエンスの領域を広く学ぶことのできる書籍です。これから広く触って行きたい人にはおすすめです。既に専門領域を持っている人にとっては、その領域の説明は物足りないかもしれませんが。 

s0sem0y.hatenablog.com