点击返回目录

NDArray 的背景介绍

在Python的世界,调用NDArray的标准包叫做NumPy。为了给Java开发者创造同一种工具,亚马逊云服务开源了DJL,一个基于Java的深度学习库。尽管它包含了深度学习模块,但是它最核心的NDArray库可以被用作NumPy的java替代工具库。

同时它具备优良的可扩展性,全平台支持,以及强大的后端引擎支持 (TensorFlow, PaddlePaddle, PyTorch, Apache MXNet等)。无论是CPU还是GPU, PC还是安卓,DJL都可以轻而易举的完成任务。

架构:

在这个系列文章中,我们将带你了解NDArray,并且教你如何写与Numpy同样简单的Java代码以及如何将NDArray使用在现实中的应用之中。 NDArray相当于python numpy的java实现,解决复杂的矩阵运算问题。多维数组存在于native C++ 内存里,如此可以方便调用下面的加速库:

NDArray提供了丰富的api,如: 四则运算: add, sub, mul, div, … 矩阵运算:matMul 比较运算:eq, gt, …. 归约运算:sum, max, min, … 其它运算:abs, exp,… 改变形状:reshape, swapAxes, …

为了更好的管理NDArray,管理数据的创建及生命周期, 创建所有NDArray都需要通过NDManager。如此可以高效的利用内存,防止内存泄露等问题。 NDManager是DJL中的一个class可以帮助管理NDArray的内存使用。通过创建NDManager,可以及时的对内存进行清理。当这个block里的任务运行完成时,内部产生的NDArray都会被清理掉。这个设计保证了我们在大规模使用NDArray的过程中,可以更高效的利用内存。

熟练掌握了NDArray的使用后,除了可以完成复杂的矩阵处理,计算外,如何用于模型的推理部署呢? 模型的推理可以概括为三个步骤:

DJL为了统一代码处理逻辑,增加代码的复用性,提供了高级接口Translator:

对NDArray有了基本的了解后,通过学习后续的教程,可以进一步掌握NDArray的使用。

代码下载地址:

Github链接

Gitee链接

点击返回目录