【WIP】TensorFlowのExerciseをがんばっている

 僕はいま、Google I/O 2016参加で渡米するにあたり、時差ボケ予防のために徹夜でこの記事を書いています。

概要(忙しい人向け)

 TensorFlowのチュートリアルにある課題(エクササイズ)に挑戦した。Softmaxの適用については比較的簡単だったが、Fully connected層をLocally connected層に変える課題については難航し、解決していない。

 Locally connected層は、重み共有をしない畳み込み層である(cuda-convnet)。
そこで、チュートリアルのモデルのFully connected層をConvolution層に置き換えたところ、学習が正常に行われなくなった。

 TensorBoardを通じてモデルの状態を確認したところ、conv2層で勾配消失が起きていることがわかった。さらに調査を続けると、conv2層のweightsの初期値がcuda-convnetに記載されている値と異なっており、修正することで正常に学習できるようになった(数値の食い違いが意図的なものかは不明だが、修正をPull Requestしている)。

 「重み共有(Shared weights/Tied weights)」をしないというLocally connectedの条件をTensorFlowでどのように実現するかは現時点でわかっていない。depthwise_conv2dについて検討したが、上手くいかないと判断している(出力フィルタの枚数を減らすことができないため)。

 エクササイズについては、今後も調査を続けていく。

TensorFlowでGPUが使えない

あわせて読みたい

概要

 GPUマシンでTensorFlowを実行する際、CUDAもcuDNNも正常にセットアップできているのに、TensorFlowがGPUを認識しない(CUDA_ERROR_NO_DEVICENo GPU devices available on machine.が表示される)場合、正しいディスプレイカード・ドライバがインストールされていない可能性があります。

 筆者の環境では、既存のドライバーをアンインストール(sudo apt-get remove --purge nvidia*)して、NVIDIAのサイトからドライバーをダウンロード・インストールすることでGPUを認識するようになりました。

ABC 2016 Springで発表しました

3月12日に開催されたイベントAndroid Bazaar and Conference 2016 Spring で発表しました。

タイトルは『Google TensorFlowとAndroidが繋がる未来』です。

初めての基調講演、しかもGoogleの佐藤さんとのジョイントセッション。さらに題材が専門外のTensorFlowということで緊張しましたが、なんとかかんとかまとまって、正直、ほっとしています。

聞きに来てくださった皆様に、改めてお礼を申し上げます。

講演の内容については、スライドをご覧ください。

今回のスライド中のまんが・イラストも、根雪れいさんにお願いしました。根雪さんは、ぼくのぼんやりしたイメージを掬い上げて、素晴らしいキャラクターとしての姿を与えてくれました。いつもありがとうございます。

最後に、スライドの中でテストケースの正答率が「91%〜95%」とか得意げに書いてありますけど、次のスライドにあるとおり、現状のモデルは過学習の状態にあると考えています。

これからもっともっとたくさんのサンプルを、さらに厳密に分類して学習させたり、グラフ(ネットワーク)を改良して認識精度を高めていく試行錯誤を続けていきます。その成果発表は、またどこか機会があれば!

みんなのコミック

はじめに

 この記事は「みんコミ Advent Calendar」の25日目の記事です。

 12月1日から24日まで、Webコミック配信サービス「みんなのコミック」に関する技術的な内容にフォーカスを当てて記事を書いてきました。

 いかがだったでしょうか?

 僕自身、1つのサービスについてこれだけ書くのは初めてのことだったので、新鮮な体験でした。

 また、23日には、「みんコミ」の中の人とお話しする場を持つこともでき(実際にお会いしたのは22日ですが)、ほとんど思いつきで始めたこときっかけで貴重な経験もできました。

 Advent Calendarをやって本当に良かったです!