この記事はWeChatの公開アカウント「小明野菜市場」から転載したもので、著者は小明野菜市場です。記事を転載する場合は小明野菜市場の公式アカウントまでご連絡ください。 序文 Java は長い間、豊富なフレームワークと完全なエコシステムを備えた非常に人気のあるエンタープライズ プログラミング言語でした。 Java には巨大な開発者コミュニティがあります。ディープラーニング アプリケーションは進歩と進化を続けていますが、Java 向けの関連するディープラーニング フレームワークは非常に不足しています。現在、主要なモデルは Python でコンパイルおよびトレーニングされています。Java 開発者がディープラーニングを学習したい場合は、新しい言語の洗礼を受ける必要があります。 Java 開発者のディープラーニングのコストを削減するために、AWS は、Java 開発者向けにカスタマイズされたオープンソースのディープラーニングフレームワークである Deep Java Library (DJL) を構築しました。これは、開発者が主流のディープラーニングフレームワークに接続するためのインターフェイスを提供します。 ディープラーニングとは 始める前に、まず機械学習とディープラーニングの基本的な概念を理解してください。機械学習は、統計的知識を使用してコンピューターにデータを入力し、特定のターゲットタスクをトレーニングして完了させるプロセスです。この帰納的学習方法により、コンピューターは特定の機能を学習し、写真内のオブジェクトの識別など、一連の複雑なタスクを実行できます。ディープラーニングは、人間の脳がどのように学習し目標を達成するかを研究して得られた計算ロジックのセットである人工ニューラルネットワークの開発に重点を置いた機械学習の分野です。人間の脳神経間の情報伝達プロセスをシミュレートすることで、さまざまな複雑なタスクを実現できます。ディープラーニングの深さは、人工ニューラルネットワークの多くの層のコンパイルと構築から生まれ、より深いレベルでデータ情報を伝達できます。 MNIST手書き数字認識のトレーニング プロジェクト構成 gradle 設定を使用して依存パッケージを導入し、DJL の api パッケージと basicdataset パッケージを使用してニューラルネットワークとデータセットを構築します。この場合、ディープラーニングエンジンとして MXNet を使用するため、mxnet-engine と mxnet-native-auto パッケージが導入されます。依存関係は次のとおりです。
NDArry と NDManager NDArray は、データ構造と数学演算を格納するための DJL の基本構造です。NDArray は固定長の多次元配列を表します。NDArray の使用方法は、Python の numpy.ndarry に似ています。 NDManager は NDAry のマネージャーであり、NDAry の生成とリサイクルを管理する役割を担い、Java メモリの最適化に役立ちます。各 NDAry は NDManager によって作成され、NDManager が閉じられると、それらも一緒に閉じられます。 モデル DJL では、トレーニングと推論の両方が Model クラスから構築されます。ここでは、主にトレーニング プロセスの構築方法に焦点を当てます。次に、Model の新しいターゲットを作成します。Model も AutoClosable 構造を継承するため、try ブロックで実装されます。
データを準備する MNIST データベースには、通常、画像処理システムのトレーニングに使用される手書き数字の画像が多数含まれています。DJL は、基本データセット データに MNIST データを収集しました。各 MNIST 画像のサイズは 28 * 28 です。独自のデータセットがある場合は、同じ方法でデータを収集することもできます。 データセットのインポートチュートリアル http://docs.djl.ai/docs/development/how_to_use_dataset.html#how-to-create-your-own-dataset
このコードは、それぞれトレーニング セットと検証セットを作成します。また、トレーニングを向上させるために、データ セットをランダムに配置します。これらの構成に加えて、画像のサイズや正規化の設定など、画像に関するその他の設定を行うこともできます。 モデルを作りブロックを作成する データ セットの準備ができたら、ニューラル ネットワークを構築できます。DJL では、ニューラル ネットワークはブロック コード ブロックで構成されます。ブロックは、複数のニューラル ネットワーク特性を持つ構造です。これらは、動作中のニューラル ネットワークの一部、または完全なニューラル ネットワークを表すことができます。その後、ブロックは順次または並列に実行できます。同時に、ブロック自体にもパラメータとサブブロックを含めることができます。このネストされた構造は、保守可能なニューラル ネットワークを迅速に更新するのに役立ちます。トレーニング プロセス中、各ブロックに添付されたパラメータはリアルタイムで更新され、そのサブブロックも同時に更新されます。これらのブロックを構築する場合、最も簡単な方法は、ブロックを 1 つずつネストし、用意されている DJL ブロック タイプを直接使用して、さまざまなニューラル ネットワークをすばやく作成することです。 ブロックバリアント いくつかの基本的なニューラル ネットワークの動作モードに応じて、いくつかのブロック バリアントを提供します。
多層パーセプトロンMLPニューラルネットワークの構築 シンプルな多層パーセプトロンニューラルネットワークを構築します。多層パーセプトロンは、完全に接続された層がいくつかあるシンプルな順方向ニューラルネットワークです。このネットワークを構築するには、sequentialblockを直接使用できます。
提供されているMLPブロックを直接使用することができます
電車 以下の手順に従ってください。 トレーニング プロセスの初期化を完了します。各ブロックのパラメータを初期化します。各パラメータを初期化する関数は、set 初期化子によって決定されます。順方向伝播: このステップでは、入力データをニューラル ネットワークの層ごとに渡し、出力データを生成します。損失の計算: 特定の損失関数損失に従って、出力とラベル付けされた結果間の偏差を計算します。バックプロパゲーション: このステップでは、損失の逆導関数を使用して各パラメータの勾配が計算されます。重みを更新すると、選択したオプティマイザーに従ってブロック上の各パラメータの値が更新されます。 合理化 DJL は、Trainer 構造を使用してプロセス全体を簡素化します。開発者は、Trainer を作成し、対応する初期化子、損失、および最適化子を指定するだけで済みます。これらのパラメータは、TrainingConfig によって設定されます。パラメータ設定を見てみましょう。 TrainingListener は、トレーニング プロセス中に設定されるリスナーであり、各ステージのトレーニング結果に関するリアルタイムのフィードバックを提供できます。これらの結果は、トレーニング プロセスを記録したり、ニューラル ネットワークのトレーニング中に発生した問題をデバッグするために使用できます。ユーザーは独自のTrainingListenerをカスタマイズしてトレーニングプロセスを監視できます。
トレーニングが生成されたら、入力シェイプを定義し、トレーニング用のgit関数を呼び出すと、結果がローカルディレクトリに保存されます。
出力結果グラフ
トレーニングが完了すると、モデルを認識して使用できるようになります。 著者について 私は二級都市で生まれ、一級都市に住んでいるシャオシャオです。このエピソードはこれで終わりです。また次回お会いしましょう。 |
<<: 旅行を恥ずかしがる必要はありません。国内の観光地がAIを導入し、スマートな旅行の新たなシナリオを実現
>>: 業界初のAIリアルタイムステルス技術、ステルスの超能力を手に入れるために快手へ
[[377897]]新型コロナウイルスの感染拡大が世界中で続く中、多くの企業が業務をリモートワーク...
人工知能(今ではよく知られている頭字語 AI で説明されます)がさまざまな業界をどのように変革してい...
視覚言語モデル (VLM) は、画像の説明、視覚的な質問応答 (VQA)、具体化された計画、アクショ...
「市の東にある家で爆弾が爆発しようとしています!」 「爆弾はネズミ捕り、ACデルコ社の単三電池、亜鉛...
テクノロジーは既存の人間文化の延長です。テクノロジーは人類の知恵を広げた一方で、人々の偏見や差別も受...
[[264978]]ビッグデータダイジェスト制作出典: towardml編纂者:劉嘉偉、王元元、ウ...
人工知能という学問分野が1956年に正式に提唱されて以来、会議やフォーラムでの華やかな「ホットワード...
[51CTO.com クイック翻訳] 機械学習を使用する開発者の間での議論のほとんどは、AI ベース...
Google の AutoML システムは最近、研究者自身よりもさらに効率的な一連の機械学習コードを...
[[438415]]クラウド コンピューティング業界が成長を続ける中、クラウド コンピューティング...
今日の午後、友人とチャットをしていて、人工知能バブルの問題について話しました。この問題に関する私の意...