简介
编辑EclipseDeeplearning4j是一个用Java编写的用于Java虚拟机(JVM)的编程库。它是一个对深度学习算法有广泛支持的框架。
Deeplearning4j包括限制性玻尔兹曼机、深度信念网、深度自动编码器、堆叠去噪自动编码器和递归神经张量网络、word2vec、doc2vec和GloVe的实现。
这些算法都包括分布式并行版本,与ApacheHadoop和Spark集成。
Deeplearning4j是在Apache许可证2.0下发布的开源软件,主要由总部设在旧金山的机器学习小组开发。它得到了创业公司Skymind的商业支持,该公司将DL4J、TensorFlow、Keras和其他深度学习库捆绑在一个名为Skymind智能层的企业版中。
深度学习4j的概述
编辑Deeplearning4j依赖于广泛使用的编程语言Java,尽管它与Clojure兼容,并包括一个Scala应用编程接口(API)。它由自己的开源数值计算库ND4J驱动,并与中央处理器(CPU)和图形处理单元(GPU)一起工作。
Deeplearning4j已经被用于一些商业和学术应用中。该代码托管在GitHub上。Gitter上有一个支持论坛。该框架是可组合的,这意味着浅层神经网络,如限制性玻尔兹曼机、卷积网络、自动编码器和递归网络可以相互添加,以创建不同类型的深度网络。它还拥有广泛的可视化工具和计算图。
Deeplearning4j的分布式训练发生在一个集群中。神经网络通过迭代还原进行并行训练,这在Hadoop-YARN和Spark上是可行的。
Deeplearning4j还与CUDA内核集成,进行纯GPU操作,并与分布式GPU一起工作。
JVM的科学计算
编辑Deeplearning4j包括一个使用ND4J的n维数组类,允许在Java和Scala中进行科学计算,类似于NumPy为Python提供的功能。它实际上是基于生产环境中的线性代数和矩阵操作的库。
用于机器学习的DataVec矢量化库DataVec使用类似于Hadoop使用的MapReduce的输入/输出格式系统对各种文件格式和数据类型进行矢量化;也就是说,它将各种数据类型变成了被称为矢量的标量列。DataVec被设计用来对CSV、图像、声音、文本、视频和时间序列进行矢量化。
文本和NLP
编辑Deeplearning4j包括一个矢量空间建模和主题建模工具包,用Java实现,并与并行GPU集成以提高性能。它被设计用来处理大型文本集。
Deeplearning4j包括术语频率-反向文档频率(tf-idf)、深度学习、Mikolov的word2vec算法、doc2vec和GloVe的实现,在Java中重新实现和优化。
它依靠t分布式随机邻居嵌入(t-SNE)来实现词云的可视化。现实世界的用例和集成Deeplearning4j的现实世界用例包括网络入侵检测和网络安全、金融部门的欺诈检测、制造业等行业的异常检测、电子商务和广告的推荐系统以及图像识别。
Deeplearning4j已经与其他机器学习平台集成,如RapidMiner、Prediction.io和Weka。
机器学习模型服务器
编辑Deeplearning4j使用SKIL(Skymind智能层)的免费开发者版本为生产中的推理提供机器学习模型。模型服务器服务于参数化的机器学习模型,对数据进行决策。它被用于机器学习工作流程的推理阶段,在数据管道和模型训练之后。
模型服务器是允许数据科学研究部署在现实世界生产环境中的工具。就像Web服务器对互联网的作用一样,模型服务器对人工智能也是如此。
网络服务器接收HTTP请求并返回有关网站的数据,而模型服务器接收数据,并返回有关该数据的决定或预测:例如,发送一张图片,模型服务器可能返回该图片的标签,识别照片中的人脸或动物。
SKIL模型服务器能够从Python框架中导入模型,如Tensorflow、Keras、Theano和CNTK,克服了部署深度学习模型的主要障碍。
基准测试
编辑Deeplearning4j在使用多个GPU进行非繁琐的图像识别任务时,速度与Caffe一样快。对于不熟悉JVM上的HPC的程序员来说,有几个参数必须调整以优化神经网络的训练时间。
这些参数包括设置堆空间、垃圾收集算法、采用堆外内存和预存数据(pickling),以便为Fa
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/176132/