分析手法Analystはじめまして、データ分析部の島田です。今日はGoogleが先日公開したTensorFlowについて書かせていただきます。動かしてみた系の記事は出ていますので、サンプルコードを使ったコードの特徴の説明とChainerとの速度比較を中心に書きました。記事アウトラインTensorFlowとはTensorFlowで出来ることTensorFlowのコードの特徴TensorFlowとChainerの速度比較まとめTensorFlowとは以下の記事ををご参照ください。everyoneGoogleの内部ツールだったDistBeliefをインフラの依存性を排除しつつ、性能を高めてオープンソース化したものです。自社比較ではDistBeliefの2倍速くなったそうです。TensorFlowで出来ること以下の記事をご参照ください。graphなどがWEBインターフェースで見ることが可能となっていることでしょうか。TensorBoardを使用した可視化についてはネクストさんのブログやこちらを参照願います。他、Multi-Deviceでの処理も行えると記載がありますが、検証出来ておりませんので今回の記事の対象からは除外します。TensorFlowのコードの特徴TensorFlowのgithub上に公開されているMNISTの手書き文字認識のコードを抜粋しつつ説明いたします。続いて、TensorFlowに独特な記述部分について説明します。model定義に使用する定数の記述(tf.app.flags)まずflags/FLAGSを作成します。flags.FLAGSこれを使用して定義と値の取得を行います。FLAGS.fake_data)sessionとsaversessionで処理を管理しsaverで変数の値を保存します。ファイルはdefaultで直近5チェックポイント分保存されます。チェックポイント毎に保存を行い、保存されるファイル数を制限する事によってstorageが圧迫される事を防いでいるという説明がドキュメントに書かれています。ChainerChainerのMNISTのexampleを元にTensorFlowのexampleと構造を合わせて実行してみました。Chainerのコードの変更箇所は以下のとおりです。model.l3(h2)速度比較結果1batch(=100個の画像データ)当たりの処理速度で比較を行いました。Chainerはコンスタントに0.004sec前後の値で処理が終了しており、平均処理速度は0.0044sec/batch。TensorFlowの平均処理速度は0.0062sec/batchでした。データsaveの部分は計測から除外しているため単純に演算速度の差が現れているはずです。batch処理をすると100分程度の差が出る結果となります。TensorFlowはDistBeliefの2倍の速いそうなのですが、Chainerはそれを上回っていました。ちなみに私のマシンのスペックは以下のとおりです。16GB(DDR3)まとめ記述量的にはそこまで変わらないですし個人的にはChainerの方が扱い易いというのが感想です(慣れの問題だとは思いますが。Executionは検証出来ておりませんので、TensorFlowの真価はわかっていない可能性も高いです。本格的にTensorFlowに時間を費やすのはもう少し様子を見てからでも遅くないような気もしています。最後になりますが、ALBERTでは、データサイエンティストを積極募集しています。採用ページをご覧ください。