深度学习的开源分布式框架Deeplearning4j

Deeplearning4j是一个为JVM设计的开源深度学习框架,支持Hadoop和Spark进行分布式训练。它提供数据并行性,能够在GPU和CPU上运行,并具有强大的N维数组库ND4J。此外,它简化了非专业人士解决计算密集型问题的过程,适用于图像、声音、文本和时间序列数据的模型识别。
摘要由CSDN通过智能技术生成

Deeplearning4j(DL4J)是专门为JVM编写的一个开源深度学习框架,主要用于商业级需求。该框架完全使用Java编写,因此名称中包含了4j”。因为是使用流行的Java语言编写的,所以Deeplearning4j开始受到更多的人和从业者的欢迎。
该框架基本上是由Hadoop和Spark集成的分布式深度学习库组成的。在Hadoop和Spark的帮助下,我们可以轻松地分发模型和大数据集,并运行多个GPU和CPU来执行操作。Deep learning4j主要在图像、声音、文本、时间序列数据等的模型识别中取得了巨大成功。除此之外,它还可以用于各种客户用例,如面部识别、欺诈检测、业务分析、推荐引擎、图像和语音搜索,以及传感器数据的预测维护。下图显示了Deeplearning4j的通用高级框架图。

Deeplearning4j的主要特性

Deeplearning4j具有以下引人注目的功能,因而完全不同于现有的其他深度学习工具(如Theano、Torch等)
1.分布式架构。Deeplearning4j中的训练可以通过两种方式进行:一种是分布式的、多线程的深度学习,另一种是传统的、普通的单线程深度学习技术。训练是在商用节点的集群中进行的。因此,Deeplearning4j能够快速处理任意数量的数据。神经网络使用迭代Reduce方法进行并行训练,该方法适用于Hadoop YARN和Apache Spark。它还与Cuda内核集成,以进行纯GPU操作,并与分布式GPU配合使用。
Deeplearning4j操作可以在Hadoop YARN或Apache Spark中作为一项作业运行。在Hadoop中,迭代Reduce节点在HDFS的每个块上工作,同时并行处理数据。处理完成后,它们将变换后的参数推送到主节点,并在主节点获得参数的平均值,接着更新每个工作者的模型。
在Deeplearning4j中,分布式运行是可互换的,它们在一个庞大的模块化架构中充当目录角色,可以进行互换。
2.数据并行性。神经网络能够以两种方式进行分布式训练:一种是数据并行,另一种是模型并行。Deeplearning4j遵循数据并行训练。在数据并行时,可以将大型数据集拆分成较小的数据集,并将它们分布到在不同服务器上运行的并行模型上,可以将大型数据集拆分成较小的数据集,并将它们分布到在不同服务器上运行的并行模型上,以并行方式进行训练。
3.JVM的科学计算能力。对Java和Scala中的科学计算来说,Deeplearning4j包含了一个使用Java N维数组(N-Dimensional Arrays for Java,ND4J)的N维类。ND4J的功能比Numpy提供给Python的功能要快得多,而且主要是用C++编写的。在生产环境中,它基于一个矩阵操作和线性操作代数库。ND4J的大多数程序都被设计为以最低RAM需求来运行。
4.机器学习的矢量化工具。为了矢量话各种文件格式和数据类型,Canova已经与Deeplearning4j合并。Canova使用一个输入/输出系统执行矢量化,就像Hadoop使用Map-Reduce一样。Canova主要用于通过命令行界面(command line interface,CLI)来矢量化文本、CSV、图像、声音、视频等。

Deeplearning4j功能总结

Deeplearning4j具有以下功能。
1.Deeplearning可谓是目前最完整的、可用于生产的开源深度学习库。
2.与基于Theano的工具相比,Deeplearning4j具有更多专门为深度网络设计的特性。
3.Deeplearning4j易于使用,即使非专业人士也可以应用其惯例来解决计算密集型问题。
4.这些工具具有广泛的适用性,因此网络对于图像、声音、文本、和时间序列同样适用。
5.Deeplearning是完全分布式的,而且可以并行运行多个GPU,这不同于非分布式的Theano,也不同于还没像DL4J一样执行自动化分配的Torch7。

在Hadoop YARN上配置Deeplearning4j

Deeplearning4j主要作用于多层神经网络。想要使用Deeplearning4j,首先需要熟悉一些前提条件,以及如何安装所有相关软件。大部分文档都可以在Deeplearning4j的官方网站https://deeplearning4j.org/上找到。
本期将帮助你熟悉Deeplearning的代码。首先展示使用Deeplearning4j的多层神经网络的一个简单操作和实现。接着讨论Deeplearning4j库的分布式深度学习。deeplearning4j使用Apache Spark在多个分布式GPU上训练分布式深度神经网络。最后介绍如何为Deeplearning4j设置Apache Spark。

熟悉Deeplearning4j

下面主要介绍使用了Deeplearning4j的“Hello World”程序。我们将借助两个简单的深度学习问题来解释Deeplearning4j库的基本功能。
在Deeplearning4j中,MultiLayerConfiguration是Deeplearning4j库的一个类,可以当作构建块的基础,负责组织神经网络的层和相应的超参数。可以认为这个类是神经网路的Deeplearning核心组件。我们将使用这个类来配置不同的多层神经网络。
超参数是确定神经网络学习过程的主要支柱,主要包括如何初始化模型的权值、应该更新多少次、模型的学习速率、使用的优化算法等。
第一个示例将展示如何使用Deeplearning4j对多层感知机分类器的数据模式进行分类。
以下是此程序中使用的训练数据集示例:

首先需要初始化网络的各种超参数。下面的代码将为程序设置ND4J环境:

Nd4j.ENFORCE_STABILITY = true;
int batchSize 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值