发布时间:2026-02-28
浏览次数:0
前言
这几年,深度学习的爆发intellij idea cxf,带来了一个未曾预料到的结果,在于这个曾经小众的语言,突然之间变得炙手可热。究其原因,在相关主题的生态当中,我们能够比较轻易地找到诸多的资源。比如说,NumPy用来进行数据计算,还有其他某些工具用于数据可视化,以及MXNet、诸多类型等一众深度学习框架。于比较之下,虽说Java语言仍旧属极为流行的语言中的一种,有着数量众多的开发者,特别是在企业市场有着最为广泛的应用根基,然而实际上我们极难寻觅到适配于深度学习的Java工具或者框架。现有的数量不多的工具依旧存在着诸多的欠缺之处,比如:易用性并不太高,所使用的依旧是“低级”的API;绑定于特定的深度学习框架,欠缺框架无关的特性等等。
在2020年2月,关于TIOBE程序语言指数(其链接为https://www.tiobe.com/tiobe-index/),针对开发人员的调查结果,是2019年(其链接为https://..com//2019)的Deep Java概述。
这便要引出今儿的主角,名曰Deep Java (简称为DJL)。DJL乃是个颇为新颖的项目,于2019年12月初的时候,在AWS re:大会之上才正式给发布出来。简单来讲,DJL是一个借助Java API去简化模型训练,以及测试、部署,还有运用深度学习模型来完成推理的开源库深度学习工具包,其开源的许可协议是 -2.0。对于Java开发者来讲,能在Java里开发并应用原生的机器学习以及深度学习模型,并且还简化了深度学习开发的难度,借由DJL所提供的直观且高级的API,Java开发人员能够训练自身的模型,或者借助数据科学家用到的预先训练好的模型去展开推理。要是您恰巧是对学习深度学习感兴趣的Java开发者,那么DJL无疑会是开启深度学习应用的一个最佳起点。
DJL是一个开发库intellij idea cxf,它是基于现有深度学习框架,运用原生Java概念构建而成的。它赋予开发者深度学习的最新创新成果以及使用前沿硬件的能力,像GPU、MKL等等。其简单的API对开发深度学习模型涉及的复杂性进行了抽象与简化,致使这个新框架更便于学习与应用。借助model - zoo中绑定的预训练模型集,开发者能够即刻着手把深度学习的SOTA成果集成到Java应用里。众所皆晓,JAVA 的设计理念存在这样一句话“Write once, run ”(也就是 WORE),同理来看,DJL 的设计目的也被设定成不依赖于特定的引擎以及深度学习框架,能够随时进行框架切换,从原则层面讲,基于 DJL 开发人员能够编写出在任何引擎上得以运行的代码,DJL 当前给出了 MXNet 的实现,预期之内与的支持也会在不久之后予以发布。目前就此实现而言,DJL借助JNA(Java)达成MXNet操作调用的实现。
col 1col 2
| Java (JNA)
JNA是个开源Java库,给Java程序提供了访问的办法,可以不使用Java(即JNI),供Java程序访问。JNA库借助一个名为()的小型库去动态调用原生代码。JNA库原生的函数,能让代码按名称加载库并检索指向该库中函数的指针再用其调用它。这一切都无需在头文件或任何编译阶段进行静态绑定。开发人员借助 Java 接口,对目标原生库里头的函数以及结构予以描述,如此一来,运用原生的平台特性这件事就变得极为简单顺畅,将配置以及构建诸如 JNI 代码那般的复杂性给降低了。
DJL给出面对基础的环境予以管理的举措,为了确保最优的性能,给出基于硬件的配置进行针对CPU以及GPU的选择,DJL给出针对多GPUs的支持,能够自动检测是不是存在可被用以使用的GPU,要是GPU可以被用以使用,它会默认运行于一个GPU之上,除非在程序里规定使用的GPU数量。
于模型训练之时,若期望于多个图形处理器上开展训练,或者有意愿去限定所使用图形处理器的数量(针对较小的数据集而言,您或许会期望限定图形处理器的数量),那么就必定要经由设置设备来予以配置。举例来讲,要是您存有8个可利用的图形处理器,并且您期望训练器于5个图形处理器上施行训练,您能够按如下方式对其进行配置。
Java
复制代码
int maxNumberOfGpus = 5; TrainingConfig config = new DefaultTrainingConfig(initializer, loss) .setOptimizer(optimizer) .addEvaluator(accuracy) .setBatchSize(batchSize) // Set the devices to run on multi-GPU .setDevices(Device.getDevices(numberOfGpus));
针对于 Java 开发者而言,DJL 的 API 将用于开发模型的常用函数实施了抽象,这致使 Java 开发人员能够凭借现有的知识把向机器学习以及深度学习的转换予以简化,想必这一点理应是 Java 开发者最为期盼所见到的情况。关于 DJL 的抽象架构,我们能够借助下图去进行理解。
来源,是这个链接:https://miro..com/max/3472/1*XQ ,关于Java的使用情况。
目前深度学习发展最为成熟的领域是计算机视觉(CV),与计算机视觉、图像处理相关的计算机技术,有一种被称作目标检测,该技术用于在数字图像以及视频之内,检测某一类语义对象(像是人、建筑物亦或是汽车)的实例,目标检测在计算机视觉的诸多领域都存在应用,涵盖图象检索以及视频监控,接下来,我们将展示某一个目标检测的例子,体验一番DJL的实际表现。这个模型运用源自DJL的model - zoo的预先训练的Shot(SSD)模型,助力我们于图像里辨别西雅图海鹰队(一支职业美式橄榄球球队)的队员哪。
要是打算把DJL运用到应用程序项目当中,能够借助IDEA去开展项目创建工作,还得把以下这些内容增添至build.配置里头。
这个句子似乎不太完整或存在错误表述,不太能按照要求准确改写。请你检查并补充完整准确的内容以方便进行改写。
接下来,我们就用这张含橄榄球员的图片进行处理。
来源: under -2.0 on Gluon-CV
就这张图片针对性地运用下面这段特定代码去开展推理。这段代码是从model - zoo选取加载一个SSD模型,接着由模型缔造创设出一个预测器,并且借助函数去辨认识别图像里的对象。之后凭借一个函数在检测发现到的对象周边绘制安上框线。
源自代码:https://gist..com//#文件--Java。
这段代码,能够把图像里的三个橄榄球运动员给标识出来,后续还会当作结果,保存成为工作目录下面的图片文件 ssd.png。
这段代码,其长度并非很大,理解它,相对而言比较容易。我们能够很轻易地给予调整,或是测试源自model - zoo的其他模型,又或者依据自身需求作出变法。然而啦,DJL所带来的乐趣,可远远不止是这么些哟。能够借由问题问答模型去训练您个人的智能化应用,或者运用图像分类模型来辨别杂货架上的商品之类的。于DJL之上,存在着更多有意思、有意义的例子。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码