2016年11月16日水曜日

JavaでDeep Learning、そしてLambda & Parallel Stream

 Deep Learningを学んだり、それを使った研究をする場合、プログラミング環境や言語の選択肢がいくつかあります。目的や用途でちがうでしょう。私の場合、総合的に考えて、プログラミングはPython、まずPythonで基本プログラミンを行い理解を深める。その後、Pythonのライブラリとしての位置づけにある、有名なGoogleのTensorFlowへ行く。そういうつもりで進めています。

しかし、実を言うと、Javaプログラミングを教えている関係で、JavaでDeep Learningの基本を全部作ってみたい。そして、Javaでの本格Deep Learning版であるDeepLearnig4Jなどへ行きたい。こちらも捨てきれない状態にあります。

そんななかで、「Java人工知能プログラミング」という書籍を入手しました。あまり詳しい解説のない入門書ですが、ゼロからDeep Learningの基礎部を作るようになっています。ノイズに強い学習をめざすデノイジングオートエンコーダも作っています。そして、何よりも、「これはいい!」と感じたこと、それはJava SE8のLambda式と並列Streamを使っていることでした。さっそく学習する例題を実行させました。4コア(8ハイパースレッド)のマシンの実行時のCPU稼働率を示します。圧倒的な並列度の高さを感じられました。

下図で左側は通常Stream、右側はParallel Streamの場合です。



0 件のコメント:

コメントを投稿