クイックスタートガイド
このページでは、DL4Jのexampleを動作させるために必要なことすべてをご説明します。
弊社のGitter Live Chat(Gitterライブチャット)に参加されることをおすすめします。Gitterでは、ヘルプが必要な方へのサポートを提供し、フィードバックも受け付けています。なお、質問のある方は、以下のガイドにいくつかの質問とその回答を紹介していますので、できればそちらを先にお読みください。ディープラーニングの始め方が分からない初心者の方にはこちらでディープラーニングの学習ができるコースのリンク、読み物、その他のリソースをご紹介しています。
コードについて
Deeplearning4jはディープ・ニューラル・ネットワークを構成するドメイン固有の言語で、複数層で構成されています。すべては、これらの層やそれらのハイパーパラメータを組織化するMultiLayerConfiguration
で開始します。
ハイパーパラメータとはニューラルネットワークがどのように学習するかを決定する変数です。ハイパーパラメータには、モデルの重みの更新回数、それらの重みの初期化方法、ノードに付与する活性化関数、使用すべき最適化アルゴリズム、モデルの学習速度に関する情報などが含まれています。以下は、設定の一例です。
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.iterations(1)
.weightInit(WeightInit.XAVIER)
.activation("relu")
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.learningRate(0.05)
// ... その他のハイパーパラメータ
.backprop(true)
.build();
Deeplearning4jでは、層を追加するにはNeuralNetConfiguration.Builder()
にlayer
を呼び、層の順序(下図のインデックスがゼロの層は入力層)におけるその位置、入力nIn
と出力nOut
それぞれのノード数、タイプを指定します。DenseLayer
.
.layer(0, new DenseLayer.Builder().nIn(784).nOut(250)
.build())
いったんネットワークの設定が終わると、モデルをmodel.fit
で訓練します。
必要なもの
- Java (開発者バージョン) 17、それ以降(64ビットバージョンのみに対応しています。)
- Apache Maven
- IntelliJ IDEAまたはEclipse
- Git
この『クイックスタートガイド』の手順を踏むには、まず最初に上記のものがインストールされていなければなりません。DL4Jは、製品展開、自動構築ツールに精通したプロのJava開発者を対象としています。これらの分野で経験のある方ならDL4Jを使った作業は非常に簡単にできるでしょう。
Javaやこれらのツールの初心者の方々は、以下の詳細情報をお読みください。インスト―ルやセットアップについての情報を提供しております。そうでない方々は、 DL4Jのサンプル にお進みください。
Java
Java 1.7、またはそれ以降のバージョンがない場合、現在のJava Development Kit (JDK)をこちらからダウンロードしてください。互換性のあるJavaのバージョンを持っているかを調べるには、以下のコマンドを使用してください。
java -version
64ビットのJavaがインストールされているかどうかを確認してください。32ビットのバージョンを使用した場合、エラーメッセージのno jnind4j in java.library.path
が表示されます。
Apache Maven
Mavenは、Javaのプロジェクトの依存関係を管理する自動ビルドツールです。IntelliJなどの統合開発環境(IDE)に対応しており、DL4Jのプロジェクトのライブラリを簡単にインストールすることができます。Mavenの最新版のインストール、またはアップデートを指示に従って行ってください。Mavenの最新版がインストールされているかどうかを調べるには、以下のコマンドを入力します。
mvn --version
Macをお使いの方は、以下のコマンドを入力してください。
brew install maven
MavenはJavaの開発者の間で広く使用されており、 DL4Jには必要不可欠です。これまでMavenを使う機会がなかった方は、ApacheのMavenに関する概要、及びトラブルシューティングのヒントを載せた弊社のJavaのプログラマーでない方々のためのMavenガイドをお読みください。IvyやGradleなどその他のビルドツールも使用できますが、Mavenが最も使いやすいでしょう。
IntelliJ IDEA
統合開発環境(IDE)を使うとAPI(アプリケーションプログラムインタフェース)を使ってニューラルネットワークをいくつかの手順を踏むだけで設定することができます。是非、IntelliJを使用することをおすすめします。Mavenと連携して依存関係を処理することができるからです。IntelliJのコミュニティ版は無料です。
IDEといえば、他にもEclipseやNetbeansなどが知られていますが、IntelliJの方がおすすめです。Gitter Live Chatで分からないことなどを聞きたい場合も、IntelliJの方がより簡単に回答が得られます。
Git
Gitの最新バージョンをインストールしてください。すでにGitを使用している場合は、Gitを使って最新バージョンにアップデートすることができます。
$ git clone git://git.kernel.org/pub/scm/git/git.git
DL4Jのサンプルの簡単な作成手順
1.コマンドラインを使用して、次のように入力します。
$ git clone https://github.com/deeplearning4j/dl4j-examples.git
$ cd dl4j-examples/
$ mvn clean install
2.IntelliJを開き、「Import Project(プロジェクトをインポート)」を選んでください。次に、メインディレクトリの’dl4j-examples’を選んでください。
3.’Import project from external model(外部モデルからプロジェクトをインポート)’を選び、Mavenを選び、これを確認してください。
4.ウィザードのオプションを続けます。jdk
で始まるSDK(ソフトウェア開発キット)を選びます。(オプションを見えない場合は、プラス記号をクリックすると見れます。)そして、「Finish(完了)」をクリックします。IntelliJがすべての依存関係をダウンロードするのを待ちます。右下にある横線のバーが作動しているのが見えます。
5.左側のファイルツリーからサンプルを選びます。 ファイルを右クリックして実行します。
自分のプロジェクトにDL4Jを使用するためのPOM.xmlファイルの設定
ご自分のプロジェクトでDL4Jを実行するには、Javaユーザには是非MavenまたはScala向けのツールのSBTなどを使用することをお勧めします。依存関係とそのバージョンの基本セットは以下の通りです。
deeplearning4j-core
:ニューラルネットワークの実装が含まれています。nd4j-native
:DL4Jにパワーを提供するND4JのライブラリのCPUバージョンdatavec-api
- Datavecは、弊社がベクトル化、ローディングに使用しているライブラリです。
Mavenの各プロジェクトにはPOMファイルがあります。サンプルを実行させると、POMファイルは、こちらのようになります。
IntelliJ内で、最初に実行するDeeplearning4jのサンプルを選ぶ必要があります。MLPLinearClassifier
がおすすめです。これを選ぶと弊社のユーザー・インターフェースにある2つのデータグループをネットワークが分類するのをほとんど即座に確認できるからです。Githubにあるファイルはこちらからアクセスできます。
このサンプルを実行するには、右クリックして、ドロップダウンメニューにある緑色のボタンを選択します。すると、IntelliJの下部のウインドウに連続するスコアが見えます。右端にある数字はネットワークによる分類のエラーのスコアです。ネットワークが学習している場合は、時間の経過とともに各バッチが処理されていくにしたがってその数字は減少していきます。最後に、このウィンドウで、ニューラルネットワークのモデルがどのくらい正確になったかが報告されます。
別のウィンドウでは、グラフによって、多層パーセプトロン(MLP)がサンプル内データをどのように分類したかが表示されます。以下はその例です。
お疲れ様でした!たった今、Deeplearning4jでの初めてのニューラルネットワークのトレーニングが完了しました。無事終了したところで、次のチュートリアル初心者のためのMNIST進んでみませんか?このチュートリアルでは、画像の分類方法をご説明します。
次のステップ
- Gitterに参加しましょう。Gitterには3つの大きなコミュニティチャンネルがあります。
- DL4J Live Chatは、DL4Jのすべてのことについてを扱うメインチャンネルです。ほとんどの人々はこのチャットを使っています。
- Tunning Helpは、ニューラルネットワークを始めた人々のために設けられました。初心者の方々は是非ご参加ください!
- Early Adoptersは、弊社の次のリリースのチェックや改善のお手伝いをしてくださっている方々向けです。注意:このコミュニティーは経験者向けです。
- ディープニューラルネットワークについてまたは弊社の詳細チュートリアルをお読みください。
- より詳細のセットアップの包括的ガイドをお読みください。
- DL4Jの説明ガイドのリストをご覧ください。
その他のリンク
- Maven CentralにあるDeeplearning4jのアーティファクト
- Maven CentralにあるND4Jのアーティファクト
- Maven CentralにあるDatavecのアーティファクト
トラブルシューティング
質問: ウインドウズで64ビットのJavaを使用しているのですが、いまだにエラーメッセージのno jnind4j in java.library.path
が表示されます。
回答: パスに互換性のないDLLがある可能性があります。これらを無視させるには、以下をVMパラメーターとして追加してください。(Run -> Edit Configurations -> IntelliJのVMオプション)
-Djava.library.path=""
質問: 次のようなエラーが発生します。Intel MKL FATAL ERROR:Cannot load mkl_intel_thread.dll
.そしてJVMがシャットダウンしてしまいます。(クラッシュはしませんが、ストップしてしまいます … )
回答: rc3.10
やそれ以降(弊社では0.4.0)は、ライブラリlibnd4j
がパスにあってもIntelのマス カーネル ライブラリー(MKL)を正常に読み込みません。しかし、この問題は、System.loadLibrary("mkl_rt")
を追加すると解消されます。