この記事はWeChatの公開アカウント「Java Architecture Master」から転載したもので、著者はJava Architecture Masterです。この記事を転載する場合は、Java Architecture Master の公開アカウントにお問い合わせください。 Deeplearning4j はモデルを Java アプリケーションと統合するように設計されており、AI を組み込んだ JVM ベースのアプリケーションを構築するためのコンポーネント セットを提供します。 Eclipse Deeplearning4j は、JVM 用のオープン ソースの分散型ディープラーニング ライブラリです。 Deeplearning4j は Java で記述されており、Scala、Clojure、Kotlin などのあらゆる JVM 言語と互換性があります。基礎となる計算は C、C++、Cuda で記述されています。 Python API として Keras が使用されます。 Deeplearning4j は Hadoop および Apache Spark と統合し、分散 GPU および CPU で使用できるように AI をビジネス環境に導入します。 Deeplearning4j は、実際には、JVM 上のディープラーニング アプリケーションのすべてのニーズをサポートするように設計されたプロジェクトのコレクションです。 Deeplearning4j 自体 (高レベル API) に加えて、ND4J (一般線形代数)、SameDiff (グラフベースの自動微分化)、DataVec (ETL)、Arbiter (ハイパーパラメータ検索)、C++ LibND4J (これらすべてをサポート) も含まれています。 LibND4J は、OpenBLAS、OneDNN (MKL-DNN)、cuDNN、cuBLAS などの標準ライブラリを呼び出し、CPU と GPU をサポートします。 Eclipse Deeplearning4j の目標は、AI を組み込んだアプリケーションを構築するためのコア コンポーネントのセットを提供することです。企業内の AI 製品は通常、機械学習だけにとどまらず、より広範囲にわたります。このディストリビューションの全体的な目標は、ディープラーニング アプリケーションを構築するためのインテリジェントなデフォルトを提供することです。 Deeplearning4j は、ある程度、他のすべてのディープラーニング フレームワークと競合します。範囲が最も類似したプロジェクトは、主要なエンドツーエンドのディープラーニング制作フレームワークである TensorFlow です。 TensorFlow には現在、Python、C++、Java (実験的) のインターフェースがあり、JavaScript での個別の実装もあります。 TensorFlow は、グラフベースと Eager 実行という 2 つのトレーニング方法を使用します。 Deeplearning4j は現在、グラフベースの実行のみをサポートしています。 おそらく最先端のディープラーニング研究フレームワークである PyTorch は、即時モードのみをサポートしており、Python、C++、Java 用のインターフェースを備えています。 H2O Sparkling Water は、H2O オープンソース分散型インメモリ機械学習プラットフォームを Spark と統合します。 H2O には、Java および Scala、Python、R、および H2O Flow ノートブック用のインターフェースがあります。 Deeplearning4j の商用サポートは Konduit から購入できます。Konduit はプロジェクトに取り組んでいる多くの開発者もサポートしています。 Deeplearning4jの仕組みDeeplearning4j は、データのロードとアルゴリズムのトレーニングのタスクを別々のプロセスとして扱います。データの読み込みと変換には DataVec ライブラリを使用し、モデルのトレーニングには Tensor ライブラリと ND4J ライブラリを使用します。 RecordReader インターフェイスを介してデータを取り込み、RecordReaderDataSetIterator を使用します。DataSetIterator として DataNormalization クラスを選択できます。画像データを操作する場合は ImagePreProcessingScaler を使用し、入力データのすべての次元にわたって均一な範囲がある場合は NormalizerMinMaxScaler を使用し、その他のほとんどのケースでは NormalizerStandardize を使用します。必要に応じて、カスタム DataNormalization クラスを実装できます。 DataSet オブジェクトは、データの機能とラベルのコンテナであり、INDArray の複数のインスタンスに値を保持します。1 つは例の機能用、1 つはラベル用、さらに 2 つはマスク用です (時系列データで作業している場合)。特徴の場合、INDArray は、例の数 x 特徴の数のサイズのテンソルです。通常、トレーニングのためにデータをミニバッチに分割します。INDArray 内のサンプルの数は、メモリに収まるほど小さいですが、適切な勾配を得るには十分な大きさです。 以下の Java の例のように、モデルを定義するために使用される Deeplearning4j コードを見ると、Keras に似た非常に高レベルの API であることがわかります。実際、Deeplearning4j への計画されている Python インターフェースでは Keras が使用されます。現時点では、Keras モデルがあれば、それを Deeplearning4j にインポートできます。
MultiLayerNetwork クラスは、Eclipse Deeplearning4j で使用できる最もシンプルなネットワーク構成 API です。DAG 構造の場合は、代わりに ComputationGraph を使用してください。最適化アルゴリズム (この場合は SGD) は、アップデータ (この場合は Nesterov) とは別に指定されることに注意してください。この非常に単純なニューラル ネットワークには、ReLU 活性化関数を持つ 1 つの密な層と、-log(尤度) 損失とソフトマックス活性化関数を持つ 1 つの出力層があり、バックプロパゲーションによって解決されます。より複雑なネットワークには、GravesLSTM、ConvolutionLayer、EmbeddingLayer、および 24 種類と 16 種類の空間タイプのその他のサポートされているレイヤー タイプも含まれる場合があります。 モデルをトレーニングする最も簡単な方法は、DataSetIterator のパラメータを使用してモデル構成で .fit() メソッドを呼び出すことです。また、イテレータをリセットして、必要な数のエポックで .fit() メソッドを呼び出すことも、EarlyStoppingTrainer を使用することもできます。 モデルのパフォーマンスをテストするには、評価クラスの 1 つを使用して、トレーニングされたモデルがテスト データにどの程度適合するかを確認します。テスト データはトレーニング データと同じであってはなりません。 Deeplearning4j は、ネットワークのパフォーマンスを視覚的に監視するのに役立つリスナー ツールを提供します。このツールは、各ミニバッチが処理された後に呼び出されます。最もよく使用されるリスナーの 1 つは ScoreIterationListener です。 Deeplearning4jのインストールとテスト現在、Deeplearning4j を試す最も簡単な方法は、公式クイックスタートを使用することです。比較的新しいバージョンの Java、Maven のインストール、動作する Git、IntelliJ IDEA (推奨) または Eclipse のコピーが必要です。ユーザーが作成したクイックスタートもいくつかあります。まず、Git または GitHub Desktop を使用して、eclipse/deeplearning4j-examples リポジトリを自分のマシンにクローンします。次に、dl4j-examples フォルダーから Maven を使用してプロジェクトをインストールします。
インストールしたら、IntelliJ IDEA で dl4j-examples/ ディレクトリを開き、いくつかの例を実行してみてください。 dl4j-examples の README には、すべての例がリストされ、簡単に説明されています。ちなみに、IntelliJ IDEA の設定を使用して、新しいバージョンの JDK をインストールし、プロジェクトに適用することができます。 有名なアイリス データ セットには 150 個の例しかなく、一部のアイリスは誤分類されることが多いものの、一般的にはモデル化が容易です。ここで使用されるモデルは、3 層の高密度ニューラル ネットワークです。 上記の Iris 分類器を実行すると、かなり良好な適合が得られ、精度、精度、再現率、F1 スコアはすべて約 98% になります。混同マトリックスでは、1 つのテスト ケースのみが誤分類されていることに注意してください。 線形分類器のデモは数秒で実行され、トレーニング データセットとテスト データセットの両方の確率プロットを生成します。データは、2 つのカテゴリに線形に分離できるように特別に生成されました。 MNIST 手書き数字データセットの多層パーセプトロン (MLP) 分類モデルは、約 14,000 回の反復後に約 97% の精度、適合率、再現率、F1 スコアを生成しました。これは、このデータセットにおける LeNet などの畳み込みニューラル ネットワークの結果ほど優れておらず、また、それほど高速でもありません。 Deeplearning4j パフォーマンスJava プログラムのベンチマークは難しい場合があります。特に、JIT コンパイラのオーバーヘッドを排除するために、時間を計測する前にコードをウォームアップする必要があり、ベンチマークするプログラムに対して JVM に十分な RAM が構成されていることを確認する必要があります。 Deeplearning4j コミュニティは、さまざまな一般的なモデルと構成のベンチマーク コードのリポジトリを管理しています。 開発者によると、Deeplearning4j は、複数の GPU を使用した重要な画像認識タスクでは Caffe と同等の速度です。複数のマシンを使用する場合は、SparkでDeeplearning4jを実行できます。 Java アプリケーションのためのディープラーニング全体として、Deeplearning4j は、データの読み込みと調整、および Java VM 上でのディープラーニングの実行に役立つライブラリです。 Deeplearning4j はまだ TensorFlow や PyTorch ほど成熟していませんが、ディープラーニング モデルを Java ベースのアプリケーションに統合したいデータ サイエンティストにとって魅力的です。 Deeplearning4j は Keras モデルをインポートできるため、TensorFlow から切り替えたい場合の移行が容易になります。 Deeplearning4j は、TensorFlow 1 と同様に、グラフの作成と実行をサポートしています。 TensorFlow 2 や PyTorch のような Eager モード トレーニングはサポートされていません。これは本番環境では重要ではありませんが、研究目的で Deeplearning4j を使用することの魅力が低下する可能性があります。 Deeplearning4j には現在、パラメータ平均化と勾配共有という 2 つの分散トレーニング メカニズムがあります。後者の方がはるかに望ましいですが、バージョン 1.0.0-beta3 でのみライブラリに追加されました。 Deeplearning4j は Spark とも統合されており、マシンのクラスターでのトレーニングをサポートします。複数の GPU を備えた単一のサーバーでトレーニングする場合、Spark を使用することはあまり役に立ちません。 |
<<: 中国科学院の張雲泉氏:コンピューティング能力は定量化可能であり、インテリジェントコンピューティングは公共サービスになる
>>: コンテストを利用して学習を促進し、エコシステムを共同で構築し、人工知能を普及させましょう。
人工知能は皆さんにとって馴染み深いものかもしれませんが、では人工知能は一体何ができるのでしょうか?本...
ボストン・ダイナミクスの創業者マーク・レイバート氏は、スポットロボット犬は将来「家庭で使用できるよう...
人工知能技術は、企業が多くのビジネス課題を解決するために不可欠です。最も重要なアプリケーション領域の...
プロジェクトを実行することが機械学習を学ぶ唯一の方法であり、興味深く価値のあるプロジェクトを見つける...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[187204]]最近、シェフィールド大学自動制御システム工学部のロデリッヒ・グロス博士は次のよう...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
Windows 11がメジャーアップデートされ、まさに「AI OS」になりました!長い歴史を持つ古い...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
6月末、わが国各省市で大学入試結果が次々と発表される中、学生の専攻選択は統計的な傾向に新たな波を起こ...
1月13日、JDD-2018 JDデジタルテクノロジーグローバルエクスプローラーコンペティションの世...
[[316623]] 【51CTOオリジナル記事】先週、WeMallは大規模なシステム障害に見舞わ...