Deeplearning4j (DL4J)
DeepLearning4J(DL4J)是一套基于Java语言的神经网络工具包,可以构建、定型和部署神经网络。DL4J与Hadoop和Spark集成,支持分布式CPU和GPU,为商业环境(而非研究工具目的)所设计。Skymind是DL4J的商业支持机构。
Deeplearning4j拥有先进的技术,以即插即用为目标,通过更多预设的使用,避免多余的配置,让非企业也能够进行快速的原型制作。DL4J同时可以规模化定制。DL4J遵循Apache 2.0许可协议,一切以其为基础的衍生作品均属于衍生作品的作者。
您可以根据我们在快速入门页上的说明,在几分钟内运行您的首个定型神经网络示例。
Deeplearning4j的功能
Deeplearning4j包括了分布式、多线程的深度学习框架,以及普通的单线程深度学习框架。定型过程以集群进行,也就是说,Deeplearning4j可以快速处理大量数据。神经网络可通过[迭代化简]平行定型,与 Java、 Scala 和 Clojure 均兼容。Deeplearning4j在开放堆栈中作为模块组件的功能,使之成为首个为微服务架构打造的深度学习框架。
-
兼容
Cloudera CDH Hortonworks HDP NVIDIA DGXs Hadoop Hadoop Yarn Apache Spark Apache Flink Apache Storm Canonical Reacive Platform -
神经网络
受限玻尔兹曼机 卷积网络 循环网络/LSTMs 深度置信网络 深度自动编码器 递归神经传感器网络 堆叠式降噪自动编码器 深度增强学习 -
其他
支持分布式 GPUs 通过Keras导入Python模型 DL4J用例 与其它平台比较 版本更新与前未来发展
Deeplearning4j的组件
深度神经网络能够实现前所未有的准确度。对神经网络的简介请参见概览页。简而言之,Deeplearning4j能够让你从各类浅层网络(其中每一层在英文中被称为layer)出发,设计深层神经网络。这一灵活性使用户可以根据所需,在分布式、生产级、能够在分布式CPU或GPU的基础上与Spark和Hadoop协同工作的框架内,整合受限玻尔兹曼机、其他自动编码器、卷积网络或递归网络。
此处为我们已经建立的各个库及其在系统整体中的所处位置:
数据的摄取、清理、联接、缩放、标准化和转换是开展任何类型的数据分析时都必须完成的工作。这类工作可能有些无趣,但却是深度学习的先决条件。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示例)包含图像、时间序列及文本数据分类与聚类的工作示例。
- Github 上的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的使用者来说都是莫大的贡献:
- 为DL4J平台作出贡献:想要为Deeplearning4j作出贡献的开发人员可先阅读开发人员指南。
- 为Deeplearning4j.org 网页作出贡献。