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。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目