忍者ブログ

軽Lab

 Javaを中心とした、プログラミング関係のナレッジベース

Home > Javaで機械学習 - Deeplearning4j入門 > Java DeepLearning4j+Eclipse 環境構築

Java DeepLearning4j+Eclipse 環境構築

過去の記事で簡単なニューラルネットワークを1から実装する方法を確認してきたが、今回からはJava向けのDeep Learningライブラリである『Deeplearning 4j (DL4j)』を利用したニューラルネットワークの構築を行っていく。

今回はDeep Learning 4jをEclipse上で利用するための環境構築方法について確認する。


■ Deeplearning 4j とは?

 Deeplearning 4jは機械学習の一手法であるディープ・ラーニング実装を容易にするオープン・ソースなフレームワークである。ライセンスはApache 2.0であり(*1)、フリーで商用利用も可能。ちなみに、困った場合にはSkymind社(米)による商用サポートも行われている。

 Theano等に代表されるように、研究用途ではPython全盛なディープ・ラーニング業界において、Javaで提供されている稀有なライブラリでもある。Deeplearning 4jではGPU計算や分散フレームワーク(Hadoop,Spark)上での利用も容易である。このため、BigDataとの相性の良さやエンジニアの確保を含めて考えると、エンタープライズ用途で利用する際には真っ先に候補に挙がるディープ・ラーニング用のライブラリではないだろうか。


■ Deeplearning 4j + Eclipseの環境構築方法

 Deepleaning 4jは多数のライブラリを利用していて、まっとうな手段で環境構築するのは骨が折れる。かくいう私もDeeplearning 4j 公式のクイックスタート(*2)を見て、やる気が一気になくなった1人である。ただ、depiesms22さんが公開しているmavenを利用したeclipse環境構築方法(*3)がかなり楽なため、今回はこの内容に沿ってインストール方法を確認する。なお、英語を読むのが苦でない方には、オリジナルの記事を参照することをお薦めする。

環境構築手順

 以下にEclipse上でDeeplearning 4jを利用するための環境構築方法を記述する。以下の手順はDeeplearning 4jを利用する各プロジェクトで行う必要がある。なお、Deeplearning 4jはJDK 1.7(64bit)準拠で動作する点に注意が必要である。

1.eclipseにmavenプラグイン『M2Eclipse』をインストールする。インストール方法については、別記事を参照のこと。

2.Eclipseのメニューから「ファイル - 新規 - プロジェクト」から、新規Mavenプロジェクト(空)を作成する。グループIDなどは、以下の図のとおりに入力する。環境構築完了後にはこのプロジェクト内でDeeplearning4jが利用可能となるが、もしプロジェクト名等を変えたい場合には環境構築完了後に名前を変更すればよい。


3.作成したプロジェクトのPOMファイル(pom.xml)を開き、『dl4j-0.4-examples/pom.xml』の内容で上書きする。ちなみに、pom.xmlを開くと以下のような画面が表示されるが、上書きの際には画面下の「pom.xml」タグを押下してソースコードを表示するとよい。POMファイルの書換直後、自動的に依存ファイルのダウンロードが始まるので、終了するまで待つ。


4.プロジェクト名を右クリックして『Maven - プロジェクトの更新』を実行。プロジェクトのコンパイルが終了するまで待つ(10分程度)と環境構築完了である。


 もし、上記手順完了後もプロジェクトにエラーが表示している場合は、以下のライブラリが足りないことが考えられる。別途ライブラリファイルをダウンロードし、クラスパスに追加するとエラーが解消する場合がある(クラスパスの追加方法はコチラを参照)。

ライブラリ名 必要ファイル ダウンロード場所
JUnit junit.jar ・Github 「junit-team/junit4


■ 参照

  1. GitHub 「Deeplearning4J: Neural Net Platform」
  2. DEEPLEARNING4J 公式「Deeplearning 4 j のクイックスタートガイド」
  3. depiesml 「DL4J (Deeplearning for Java) – Getting Started」
Home > Javaで機械学習 - Deeplearning4j入門 > Java DeepLearning4j+Eclipse 環境構築

- ランダム記事 -
- PR -

コメント

2. 質問です

はじめまして、かぬらと申します。
大変、参考になる解説ページを作っていただきありがとうございます。
上記の手順通りに進めたのですが、依存ファイルのダウンロードが実行されません...
何か解決法に心当たりはないでしょうか?

質問ありがとうございます。

数日前にリンク先の内容が変わったようで、インストール方法は少々変更が必要なようです。他力本願な記事の書き方してると、こうなっちゃうのでいけないですね。。。

近日中に記事は更新しようと思いますが、取り急ぎ、以下の方法を試してみてください。

【プロジェクトの作成方法の変更点(version=0.7-SNAPSHOT)】
1.上記の記事で作成したpom.xmlを以下の内容で上書きします。
  dl4j-tutorialのpom.xml
2.作成したプロジェクトとは別に、記事と同様の方法で別プロジェクト
  (アーティファクトid:dl4j-tutorial-parent)を作成します。
3.作成したプロジェクトのpom.xmlを以下の内容で上書きします。
  dl4j-tutorial-parentのpom.xml

これで最初に作成したプロジェクトに必要なコンポーネントのダウンロードが
始まると思います。うまくいかない場合、また連絡いただけると助かります。

# とりあえず、手元の環境ではダウンロードできました。
# リンク先のリポジトリでプロジェクトの構成が変わった(複数のプロジェクトを
# まとめる親プロジェクトが追加された)ことが原因のようで、pom.xmlに親子関係が
# 追加されています。

3. 質問よろしいでしょうか?

dl4j-tutorialを更新した時以下のようなエラーが出たのですが、これはどうやって解決すればいいのか教えていただけませんか?

ライフサイクル構成でカバーされていないプラグインの実行: com.lewisd:lint-maven-plugin:0.0.11:check (実行: pom-lint, phase: validate) pom.xml /dl4j-tutorial 行 8 Maven プロジェクト・ビルド・ライフサイクル・マッピング問題

Re:質問よろしいでしょうか?

質問ありがとうございます。

該当のエラーについて調べてみたいと思っているのですが、ちょっと業務が忙しいので週末まで待っていただければと思います。。。いやはや、申し訳ないです。

(2017/05/01 追記)
上記のエラー再現しましたので、ちょっと調べてみました。

まず、毎度のことながらリンク先の内容が変わっているようで、
プロジェクトの作成方法の変更点の確認から。

【プロジェクトの作成方法の変更点(version=0.8-SNAPSHOT)】
1.上記の記事ので作成する内容を以下のように変更
 プロジェクト名:dl4j-examples
 pom.xmlの内容:dl4j-examplesのpom.xml
2.作成したプロジェクトとは別に、記事と同様の方法で別プロジェクトを作成。
 プロジェクト名:deeplearning4j-examples-parent
 pom.xmlの内容:dl4j-examplesのpom.xml
3.ライフサイクル構成エラーへの対策
 dl4j-examplesのpom.xmlの8行目(parentタグ)でライフサイクル構成エラーが発生。
 →エラーアイコンをクリックして、Quick Fix(mark goal run as ignored in eclipse build in eclipse preferences(experimental))を実行するとエラーは消える。

と、まあこんな感じでエラーは解消すると思います。

 3でやってることは、Mavenのeclipseプラグイン(M2Eプラグイン)が「知らないgoalが設定してあるよ」と言っているので、「とりあえず無視していいよ」と設定しています。無視したことによる動作がいまいちわかりませんが、実行前チェック(validate)の話なので、最悪動作してなくてもプログラムの挙動には影響がないはずです。

また、私の環境では続いて以下のエラーが発生したので、記載しておきます。

4.dl4j-exampleのプロジェクトをmavenでコンパイル(maven clean package)したところ、
  親プロジェクトが見つからないとのエラー。
  →dl4j-exampleのparentタグ内に以下の記述を追加。
   dl4j-examplesプロジェクトからdeeplearning4j-examples-parentプロジェクトへの相対パスです。
   <relativePath>..\deeplearning4j-examples-parent</relativePath>

5.dl4j-examplesで以下のエラーが発生
「org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade (default) on project dl4j-examples: Error creating shaded jar: invalid LOC header (bad signature)」
  →mavenからダウンロードしたjarファイルが壊れているようなので、
   ローカルリポジトリ(~/.m2/repository)を削除して再度実行したらエラー解消

【補足情報:ライフサイクル構成のエラーの意味について】
 Mavenには『phase』と考え方があり、例えば『phase=validate』では事前チェック、
『phase=compile』ではコンパイル、『phase=package』ではパッケージ化(jar作成など) を実施すると決めています。そして、phaseには順序が決められていて、Mavenではphaseを前から順に実行していきます。これをライフサイクルと呼びます。

 しかし、実行するにもMavenは実際に何をするか具体的なことは一切は知らないため、具体的な動作は『プラグイン』と呼ばれるもので定義してあげます。phaseとプラグインの対応関係はpom.xmlで記述してあげます。ちなみに、1つのプラグイン内で複数の動作を記述可能な模様で、pom.xmlで『goal』というIDを指定して動作を特定しています。(pom.xmlのexecutionosタグ内の記述)

 上記のエラーはこのライフサイクルのIDをM2Eプラグインが知らなかったということのようです。ちなみに上記修正方法は「m2eでプロジェクトインポートすると出るエラー "Plugin execution not covered by lifecycle configuration"」の方法2で設定するのと同等の内容ですので、設定を削除したいときに参考にしてください。

プロフィール

管理者:
 連絡はContactよりお願いします。

PR