简介:
Deep Java Library(DJL)是一个开源的、高级的、与深度学习引擎无关的Java框架,专为Java开发人员设计。DJL旨在让Java开发人员轻松入门并简化深度学习的使用。它提供了与其他常规Java库类似的本地Java开发体验。无需成为机器学习/深度学习专家,您就可以利用现有的Java知识学习和使用机器学习和深度学习。您可以使用喜欢的集成开发环境(IDE)来构建、训练和部署模型。DJL使得将这些模型与您的Java应用程序集成变得容易。由于DJL与深度学习引擎无关,因此在创建项目时无需在引擎之间做出选择。您可以随时切换引擎。为了确保最佳性能,DJL还根据硬件配置提供自动的CPU/GPU选择。
主要特点:
- 引擎无关性:DJL与深度学习引擎无关,可以在不同引擎之间切换,如MXNet、PyTorch和TensorFlow等。
- 简单易用:DJL旨在让Java开发人员轻松入门并简化深度学习的使用。
- 本地Java开发体验:DJL提供了与其他常规Java库类似的本地Java开发体验。
- 自动CPU/GPU选择:DJL根据硬件配置自动选择最佳的CPU或GPU。
核心API:
- Criteria:Criteria类对象定义了模型的情况,如模型路径、输入和输出等。通过Criteria可以实例化出Model Zoo对象,用于对模型进行管理。
- Translator:Translator接口用于定义如何将自定义的输入输出类转换为Tensor类型。它包含两个方法:processInput和processOutput。
- NDArray:DJL的NDArray类类似于Python中的numpy.ndarray,可以进行各种Tensor操作,如创建、运算、切片等。
使用示例:
以下是使用DJL进行模型推理的简单示例:
// 创建Criteria对象
Criteria<Input, Output> criteria = Criteria.builder()
.setTypes(Input.class, Output.class)
.optModelPath(Paths.get("/var/models/my_model"))
.optModelName("model")
.build();
// 加载模型
ZooModel<Input, Output> model = criteria.loadModel();
// 创建Predictor
Predictor<Input, Output> predictor = model.newPredictor();
// 进行推理
Output output = predictor.predict(input);
Learn more: