Deep Java Library(DJL)は、深い学習のためのオープンソースの高レベルのエンジンに依存しないJavaフレームワークです。 DJLは、Java開発者にとって簡単に使用できるように設計されており、簡単に使用できます。 DJLは、他の通常のJavaライブラリと同様に、ネイティブのJava開発エクスペリエンスと機能を提供します。
始めるために機械学習/ディープラーニングの専門家である必要はありません。既存のJavaの専門知識をオンランプとして使用して、機械学習と深い学習を学習および使用できます。お気に入りのIDEを使用して、モデルを構築、訓練、展開できます。 DJLにより、これらのモデルをJavaアプリケーションと簡単に統合できます。
DJLはディープラーニングエンジンに不可知論されるため、プロジェクトを作成する際にエンジン間を選択する必要はありません。いつでもエンジンを切り替えることができます。最高のパフォーマンスを確保するために、DJLはハードウェア構成に基づいて自動CPU/GPU選択も提供します。
DJLの人間工学に基づいたAPIインターフェイスは、深い学習タスクを達成するためのベストプラクティスを導くように設計されています。次の擬似コードは、実行中の推論を示しています。
// Assume user uses a pre-trained model from model zoo, they just need to load it
Criteria < Image , Classifications > criteria =
Criteria . builder ()
. optApplication ( Application . CV . OBJECT_DETECTION ) // find object detection model
. setTypes ( Image . class , Classifications . class ) // define input and output
. optFilter ( "backbone" , "resnet50" ) // choose network architecture
. build ();
Image img = ImageFactory . getInstance (). fromUrl ( "http://..." ); // read image
try ( ZooModel < Image , Classifications > model = criteria . loadModel ();
Predictor < Image , Classifications > predictor = model . newPredictor ()) {
Classifications result = predictor . predict ( img );
// get the classification and probability
...
}次の擬似コードは、トレーニングを実行していることを示しています。
// Construct your neural network with built-in blocks
Block block = new Mlp ( 28 * 28 , 10 , new int [] { 128 , 64 });
Model model = Model . newInstance ( "mlp" ); // Create an empty model
model . setBlock ( block ); // set neural network to model
// Get training and validation dataset (MNIST dataset)
Dataset trainingSet = new Mnist . Builder (). setUsage ( Usage . TRAIN ) ... . build ();
Dataset validateSet = new Mnist . Builder (). setUsage ( Usage . TEST ) ... . build ();
// Setup training configurations, such as Initializer, Optimizer, Loss ...
TrainingConfig config = setupTrainingConfig ();
Trainer trainer = model . newTrainer ( config );
/*
* Configure input shape based on dataset to initialize the trainer.
* 1st axis is batch axis, we can use 1 for initialization.
* MNIST is 28x28 grayscale image and pre processed into 28 * 28 NDArray.
*/
trainer . initialize ( new Shape ( 1 , 28 * 28 ));
EasyTrain . fit ( trainer , epoch , trainingSet , validateSet );
// Save the model
model . save ( modelDir , "mlp" );
// Close the resources
trainer . close ();
model . close ();DJL 0.32.0のリリースは、2025年1月に計画されています。
ソースから構築するには、コードをチェックアウトすることから始めます。ローカルでコードをチェックアウトしたら、Gradleを使用して次のように作成できます。
# for Linux/macOS:
./gradlew build
# for Windows:
gradlew buildビルド速度を上げるには、次のコマンドを使用してユニットテストをスキップできます。
# for Linux/macOS:
./gradlew build -x test
# for Windows:
gradlew build -x testソースプロジェクトをEclipseにインポートします
# for Linux/macOS:
./gradlew eclipse
# for Windows:
gradlew eclipse
日食
file-> import-> gradle->既存のGradleプロジェクト
注:ワークスペーステキストエンコード設定をUTF-8に設定してください
DJL、問題、ディスカッション、およびRFCに従って、コミュニティフォーラムへのガイドを読んで、DJLコミュニティのコンテンツを共有して見つけるための最良の方法を把握できます。
Slackチャンネルに参加して、質問やディスカッションについては、開発チームと連絡を取ります。
X(以前のTwitter)をフォローして、新しいコンテンツ、機能、リリースに関する更新をご覧ください。
关注我们知乎专栏获取djl 最新的内容!
このプロジェクトは、Apache-2.0ライセンスの下でライセンスされています。