
Deep Java Library (DJL) 是一个开源的、高层级的、引擎无关的 Java 深度学习框架。DJL 旨在让 Java 开发者能够轻松上手并简化使用。DJL 提供了原生的 Java 开发体验,其行为方式与任何其他常规 Java 库无异。
您无需成为机器学习/深度学习专家即可开始使用。您可以利用现有的 Java 专业知识作为学习并应用机器学习和深度学习的入门途径。您可以使用自己喜欢的 IDE 来构建、训练和部署模型。DJL 使这些模型与您的 Java 应用程序轻松集成成为可能。
由于 DJL 是深度学习引擎无关的,您在创建项目时无需在引擎之间做出选择,可以在任何时间点切换引擎。为确保最佳性能,DJL 还根据硬件配置自动选择 CPU/GPU。
DJL 的人性化 API 接口旨在指导您遵循最佳实践完成深度学习任务。以下伪代码演示了如何运行推理:
// 假设用户使用来自模型动物园的预训练模型,只需加载它
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);
// 获取分类结果及概率
...
}
以下伪代码演示了如何运行训练:
// 使用内置模块构建您的神经网络
Block block = new Mlp(28 * 28, 10, new int[] {128, 64});
Model model = Model.newInstance("mlp"); // 创建一个空模型
model.setBlock(block); // 为模型设置神经网络
// 获取训练和验证数据集(MNIST 数据集)
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);
/*
* 根据数据集配置输入形状以初始化训练器。
* 第一个轴是批次轴,初始化时可以使用 1。
* MNIST 是 28x28 灰度图像,预处理后为 28 * 28 的 NDArray。
*/
trainer.initialize(new Shape(1, 28 * 28));
EasyTrain.fit(trainer, epoch, trainingSet, validateSet);
// 保存模型
model.save(modelDir, "mlp");
// 关闭资源
trainer.close();
model.close();
要从源码构建,首先检出代码。在本地检出代码后,可以使用 Gradle 按如下方式构建:
# 适用于 Linux/macOS:
./gradlew build
# 适用于 Windows:
gradlew build
为了提高构建速度,您可以使用以下命令跳过单元测试:
# 适用于 Linux/macOS:
./gradlew build -x test
# 适用于 Windows:
gradlew build -x test
将源代码项目导入到 Eclipse:
# 适用于 Linux/macOS:
./gradlew eclipse
# 适用于 Windows:
gradlew eclipse
在 Eclipse 中:
文件 -> 导入 -> Gradle -> 现有 Gradle 项目
注意: 请将您的工作区文本编码设置为 UTF-8。
您可以阅读我们的 社区论坛、关注 DJL、问题、讨论和 RFC 指南,了解与 DJL 社区分享和获取内容的最佳方式。
加入我们的
Slack 频道,与开发团队联系,提出问题并进行讨论。
关注我们的
X(原 Twitter) 以获取新内容、功能和版本的最新动态。
关注我们的 知乎专栏 获取 DJL 最新内容!
本项目采用 Apache-2.0 许可证。