deepjavalibrary/djl
An Engine-Agnostic Deep Learning Framework in Java
Deep Java Library (DJL) – 快速概览
简介 – DJL 是一个 Java 优先的高层次深度学习框架,构建在流行的原生引擎(TensorFlow、PyTorch、MXNet 等)之上。它让 Java 开发人员无需学习新语言或离开他们常用的 IDE,即可加载、训练和运行神经网络推理。
核心理念
- 引擎无关 – 您可以在运行时选择引擎;您可以在不改代码的情况下切换 TensorFlow ↔ PyTorch ↔ MXNet。
- 自动 CPU/GPU 选择 – DJL 检测硬件并选择最佳后端。
- 模型库集成 – 通过简单的
Criteria构建器发现预训练模型。 - 完整的训练支持 – 您可以使用内置块定义网络,创建
Trainer,并运行经典训练循环。
典型用法
// 推理 – 选择预训练的目标检测模型
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> pred = model.newPredictor()) {
Classifications result = pred.predict(img);
// …处理结果…
}
// 训练 – MNIST 上的一个小型 MLP
Block block = new Mlp(28*28, 10, new int[]{128,64});
Model model = Model.newInstance("mlp");
model.setBlock(block);
Dataset train = new Mnist.Builder().setUsage(Usage.TRAIN).build();
Dataset test = new Mnist.Builder().setUsage(Usage.TEST).build();
TrainingConfig cfg = setupTrainingConfig();
Trainer trainer = model.newTrainer(cfg);
trainer.initialize(new Shape(1, 28*28));
EasyTrain.fit(trainer, epochs, train, test);
model.save(modelDir, "mlp");
适用人群 – 想要尝试深度学习、在企业服务中嵌入推理或在不离开 JVM 生态系统的情况下构建端到端 ML 管道的 Java 开发人员。
了解更多 –
- 官方文档:https://docs.djl.ai/
- DJL 的“Dive into Deep Learning”书(Java 版)
- Javadoc API 参考
- 社区 Slack、GitHub 讨论以及中文更新的知乎专栏。
许可证 – Apache-2.0,您可以在开源和商业项目中使用。
所有细节均直接来自仓库的 README。
相关
- 项目
- 项目
- 项目
- 项目
- 项目