OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Deep Java Library — 适合 Java 生态的深度学习工具包

Deep Java Library — 适合 Java 生态的深度学习工具包

 
  jazz ·  2026-08-31 11:00:18 · 31 次点击  · 0 条评论  

DeepJavaLibrary

Release
Docs
Continuous
Nightly Publish
CodeQL

Deep Java Library (DJL)

概述

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

将源代码项目导入到 Eclipse:

# 适用于 Linux/macOS:
./gradlew eclipse

# 适用于 Windows:
gradlew eclipse

在 Eclipse 中:

文件 -> 导入 -> Gradle -> 现有 Gradle 项目

注意: 请将您的工作区文本编码设置为 UTF-8。

社区

您可以阅读我们的 社区论坛、关注 DJL、问题、讨论和 RFC 指南,了解与 DJL 社区分享和获取内容的最佳方式。

加入我们的 Slack 频道,与开发团队联系,提出问题并进行讨论。

关注我们的 X(原 Twitter) 以获取新内容、功能和版本的最新动态。

关注我们的 知乎专栏 获取 DJL 最新内容!

有用链接

许可证

本项目采用 Apache-2.0 许可证

31 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 20 ms
Developed with Cursor