

Deep Java Library (DJL)
Overview
Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning. DJL is designed to be easy to get started with and simple to
use for Java developers. DJL provides a native Java development experience and functions like any other regular Java library.
You don't have to be machine learning/deep learning expert to get started. You can use your existing Java expertise as an on-ramp to learn and use machine learning and deep learning. You can
use your favorite IDE to build, train, and deploy your models. DJL makes it easy to integrate these models with your
Java applications.
Because DJL is deep learning engine agnostic, you don't have to make a choice
between engines when creating your projects. You can switch engines at any
point. To ensure the best performance, DJL also provides automatic CPU/GPU choice based on hardware configuration.
DJL's ergonomic API interface is designed to guide you with best practices to accomplish
deep learning tasks.
The following pseudocode demonstrates running inference:
Criteria<Image, Classifications> criteria =
Criteria.builder()
.optApplication(Application.CV.OBJECT_DETECTION)
.setTypes(Image.class, Classifications.class)
.optFilter("backbone", "resnet50")
.build();
Image img = ImageFactory.getInstance().fromUrl("http://...");
try (ZooModel<Image, Classifications> model = criteria.loadModel();
Predictor<Image, Classifications> predictor = model.newPredictor()) {
Classifications result = predictor.predict(img);
...
}
The following pseudocode demonstrates running training:
Block block = new Mlp(28 * 28, 10, new int[] {128, 64});
Model model = Model.newInstance("mlp");
model.setBlock(block);
Dataset trainingSet = new Mnist.Builder().setUsage(Usage.TRAIN) ... .build();
Dataset validateSet = new Mnist.Builder().setUsage(Usage.TEST) ... .build();
TrainingConfig config = setupTrainingConfig();
Trainer trainer = model.newTrainer(config);
trainer.initialize(new Shape(1, 28 * 28));
EasyTrain.fit(trainer, epoch, trainingSet, validateSet);
model.save(modelDir, "mlp");
trainer.close();
model.close();
Resources
Release Notes
The release of DJL 0.32.0 is planned for January 2025.
Building From Source
To build from source, begin by checking out the code.
Once you have checked out the code locally, you can build it as follows using Gradle:
./gradlew build
gradlew build
To increase build speed, you can use the following command to skip unit tests:
./gradlew build -x test
gradlew build -x test
Importing into eclipse
to import source project into eclipse
./gradlew eclipse
gradlew eclipse
in eclipse
file->import->gradle->existing gradle project
Note: please set your workspace text encoding setting to UTF-8
You can read our guide to community forums, following DJL, issues, discussions, and RFCs to figure out the best way to share and find content from the DJL community.
Join our
slack channel to get in touch with the development team, for questions and discussions.
Follow our
X (formerly Twitter) to see updates about new content, features, and releases.
关注我们
知乎专栏 获取DJL最新的内容!
Useful Links
License
This project is licensed under the Apache-2.0 License.