Deeplearning4j (DL4J)

DeepLearning4J(DL4J)是一套基于Java语言的神经网络工具包,可以构建、定型和部署神经网络。DL4J与Hadoop和Spark集成,支持分布式CPU和GPU,为商业环境(而非研究工具目的)所设计。Skymind是DL4J的商业支持机构。

Deeplearning4j拥有先进的技术,以即插即用为目标,通过更多预设的使用,避免多余的配置,让非企业也能够进行快速的原型制作。DL4J同时可以规模化定制。DL4J遵循Apache 2.0许可协议,一切以其为基础的衍生作品均属于衍生作品的作者。

您可以根据我们在快速入门页上的说明,在几分钟内运行您的首个定型神经网络示例。


Deeplearning4j的功能

Deeplearning4j包括了分布式、多线程的深度学习框架,以及普通的单线程深度学习框架。定型过程以集群进行,也就是说,Deeplearning4j可以快速处理大量数据。神经网络可通过[迭代化简]平行定型,与 Java、 ScalaClojure 均兼容。Deeplearning4j在开放堆栈中作为模块组件的功能,使之成为首个为微服务架构打造的深度学习框架。


Deeplearning4j的组件

深度神经网络能够实现前所未有的准确度。对神经网络的简介请参见概览页。简而言之,Deeplearning4j能够让你从各类浅层网络(其中每一层在英文中被称为layer)出发,设计深层神经网络。这一灵活性使用户可以根据所需,在分布式、生产级、能够在分布式CPU或GPU的基础上与Spark和Hadoop协同工作的框架内,整合受限玻尔兹曼机、其他自动编码器、卷积网络或递归网络。

此处为我们已经建立的各个库及其在系统整体中的所处位置:


dl4j ecosystem


数据的摄取、清理、联接、缩放、标准化和转换是开展任何类型的数据分析时都必须完成的工作。这类工作可能有些无趣,但却是深度学习的先决条件。DataVec是专为这一流程设计的工具包。数据科学家和开发人员可以用其中的工具将图像、视频、声音、文本和时间序列等原始数据转变为特征向量,输入神经网络。

概述:神经网络专门处理多维数组形式的数值数据。DataVec可以将来自一个CSV文件或一批图像的数据序列化,转换为数值数组。

  • 数据的的 ETL (抽取、转换、装载)和向量化
  • DataVec帮助克服机器学习及深度学习实现过程中最重大的障碍之一:将数据转化为神经网络能够识别的格式
  • DataVec使用Apache Spark来进行转换运算。
  • 开源工具 ASF 2.0许可证:github.com/deeplearning4j/DataVec
  • 想了解更多关于DataVec的可以点击这里

DeepLearning4J用于设计神经网络:

  • Deeplearning4j(简称DL4J)是为Java和Scala编写的首个商业级开源分布式深度学习
  • DL4J与Hadoop和Spark集成,为商业环境(而非研究工具目的)所设计。
  • 支持GPU和CPU
  • 受到 Cloudera, Hortonwork, NVIDIA, Intel, IBM 等认证,可以在Spark, Flink, Hadoop 上运行
  • 支持并行迭代算法架构
  • DeepLearning4J的JavaDoc可在此处获取
  • DeepLearning4J示例的Github代码库请见此处。相关示例的简介汇总请见此处
  • 开源工具 ASF 2.0许可证:github.com/deeplearning4j/deeplearning4j

ND4J是DeepLearning4J的数值处理库和张量库,在JVM中实现NumPy的功能:

  • ND4J 是 Java 科学运算引擎,用来驱动矩阵操作。
  • JavaCPP功能: Java 到 Objective-C 的桥,可像其他 Java 对象一样来使用 Objective-C 对象。
  • CPU 后瑞:OpenMP、OpenBlas 或 MKL、与SIMD的扩展
  • GPU 后瑞:最新CUDA 及 CuDNN
  • ND4J的JavaDoc可在此处获取。
  • ND4J示例请见此处
  • 开源工具 ASF 2.0许可证:github.com/deeplearning4j/nd4j

Arbiter帮助您搜索超参数空间,为神经网络寻找最理想的参数组合及架构。这非常重要,因为寻找恰当的架构和超参数是一个很大的组合问题。来自微软研发部等企业实验室的ImageNet大赛获胜团队正是通过搜索超参数空间才得出了ResNet这样的150层神经网络:

  • 深度学习模型检测、评估器
  • 调整及优化机器学习模型
  • 使用Grid search和Random Search 作超参数寻优
  • 开源工具 ASF 2.0许可证:github.com/deeplearning4j/Arbiter
    • arbiter-core:Aribter-core用网格搜索等算法来搜索超参数空间。它会提供一个GUI界面。
    • arbiter-deeplearning4j:Arbiter可以同DL4J模型互动。在进行模型搜索时,您需要能运行模型。这样可以对模型进行试点,进而找出最佳的模型。

其他组件

  • Keras Model Import(Keras模型导入)帮助用户将已定型的Python和Keras模型导入DeepLearning4J和Java环境。参考模型导入
  • DL4J-Examples(DL4J示例)包含图像、时间序列及文本数据分类与聚类的工作示例。
  • ScalNet是受Keras启发而为Deeplearning4j开发的Scala语言包装。它通过Spark在多个GPU上运行。
    • ScalNet针对Scala语言开发,功能相当于Keras。它是DeepLearning4J的Scala语言包装,可以在多个GPU上运行Spark。
    • Github上的ScalNet代码库
  • RL4J用于在JVM上实现深度Q学习、A3C及其他强化学习算法。
    • RL4J是在Java中实现深度Q学习、A3C及其他强化学习算法的库和环境,与DL4J和ND4J相集成。
    • Github代码库:

为Deeplearning4j作出贡献

为DL4J作出贡献,让DL4J平台变得更完美!不管是一两行的代码,或是一系列的改动,对DL4J的使用者来说都是莫大的贡献:

加入 Github,使用DL4J,为DL4J作出贡献
与我们在Gitter聊天