クイックスタートガイド

このページでは、DL4Jのexampleを動作させるために必要な事柄すべてをご説明します。

弊社のGitter Live Chat(Gitterライブチャット)に参加されることをおすすめします。Gitterでは、ヘルプが必要な方へのサポートの提供やフィードバックの受付を行っております。なお、質問のある方は、以下のガイドにいくつかの質問に対する回答をご紹介しておりますので、こちらを先にお読みいただければ幸いです。ディープラーニングの初心者の方にはa road map for beginners(ディープラーニングの初心者ガイド)、ディープラーニングに関するコースのサイト、読み物、その他のリソースもご紹介しています。

コードについて

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で訓練します。

必要なもの

この『クイックスタートガイド』の手順を踏むには、まず最初に上記のものがインストールされていなければなりません。DL4Jは、製品展開、自動構築ツールに精通したプロのJava開発者を対象としています。これらの分野で経験のある方ならDL4Jを使った作業は非常に簡単にできるでしょう。

Javaやこれらのツールの初心者の方々は、以下の詳細情報をお読みください。インスト―ルやセットアップについての情報を提供しております。そうでない方々は、DL4Jのexamplesにお進みください。

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に関する概要、及びトラブルシューティングのヒントを載せた弊社のIntroduction to Maven for non-Java programmers(Javaのプログラマーでない方々のためのMaven初心者ガイド)をお読みください。IvyやGradleなどその他のビルドツールも使用できますが、Mavenが最も使いやすいでしょう。

IntelliJ IDEA

統合開発環境(IDE)を使うとAPI(アプリケーションプログラムインタフェース)を使ってニューラルネットワークをいくつかのステップを踏むだけで設定することができます。是非、IntelliJを使用することをおすすめします。Mavenと連携して依存関係を処理することができるからです。IntelliJのコミュニティ版は無料です。

IDEといえば、他にもEclipseNetbeansなどが知られていますが、IntelliJの方がおすすめです。Gitter Live Chatで分からないことなどを聞きたい場合も、IntelliJの方がより簡単に回答が得られます。

Git

Gitの最新バージョンをインストールしてください。すでにGitを使用している場合は、Gitを使って最新バージョンにアップデートすることができます。

$ git clone git://git.kernel.org/pub/scm/git/git.git

DL4Jのexamplesの簡単な作成手順

1.コマンドラインを使用して、次のように入力します。

    $ git clone https://github.com/deeplearning4j/dl4j-examples.git
    $ cd dl4j-examples/
    $ mvn clean install

2.IntelliJを開き、「Import Project(プロジェクトをインポート)」を選んでください。次に、メインディレクトリの’dl4j-examples’を選んでください。

select directory

3.’Import project from external model(外部モデルからプロジェクトをインポート)’を選び、Mavenが選択されているようにしてください。 import project

4.ウィザードのオプションを続けます。jdkで始まるSDK(ソフトウェア開発キット)を選びます。(オプションを見えない場合は、プラス記号をクリックすると見れます。)そして、「Finish(完了)」をクリックします。IntelliJがすべての依存関係をダウンロードするのを待ちます。右下にある横線のバーが使えるようになっているのが見えます。

5.左側のファイルツリーから例をピックアップします。 run IntelliJ example ファイルを右クリックして作動させます。

Using DL4J In Your Own Projects:POM.xmlファイルの設定

自分のプロジェクトでDL4Jを使用するには、Javaユーザは是非Maven、またはScala向けのツールのSBTなどを使用することをお勧めします。依存関係とそのバージョンの基本セットは以下の通りです。

  • deeplearning4j-core:ニューラルネットワークの実装が含まれています。
  • nd4j-native:DL4Jにパワーを提供するND4JのライブラリのCPUバージョン
  • canova-api - Canovaは、弊社がベクトル化、ローディングを行うのに使っているライブラリです。

Mavenの各プロジェクトにはPOMファイルがあります。exampleを作動させると、POMファイルは、こちらのようになります。

IntelliJ内では、最初に実行するDeeplearning4jを選ぶ必要があります。MLPClassifierLinearがおすすめです。ネットワークがすぐに弊社のユーザー・インターフェースにある2つのデータグループを分類するのを確認できるからです。Githubにあるファイルはこちらからアクセスできます。

このexampleを実行するには、右クリックして、ドロップダウンメニューにある緑色のボタンを選択します。すると、IntelliJの下部のウインドウにスコアの連続が見えます。右端にある数字はネットワークの分類のためのエラースコアです。ネットワークが学習している場合は、時間の経過とともに各バッチが処理されていくにしたがってその数字は減少していきます。最後に、このウィンドウは、ニューラルネットワークのモデルがどのくらい正確になったかを報告します。

run IntelliJ example

別のウィンドウでは、グラフによって、多層パーセプトロン(MLP)exampleのデータをどのように分類したかが表示されます。以下はその例です。

run IntelliJ example

お疲れ様でした!たった今、Deeplearning4jでの初めてのニューラルネットワークの訓練が完了しました。ほっと一息着いたところで、次のチュートリアルに進んでみませんか?MNIST for Beginners(初心者のためのMNIST)では、画像の分類方法が学習できます。

次のステップ

1.Gitterに参加しましょう。Gitterには3つの大きなコミュニティチャンネルがあります。

その他のリンク

トラブルシューティング

質問:ウインドウズで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")を追加すると解消されます。

ジッターで私たちとチャット