开始
这是运行DL4J示例所需的一切,并开始自己的项目。
我们建议你加入我们的 Gitter Live Chat。Gitter是你可以请求帮助和提供反馈的地方,但是在问下面我们已经回答的问题之前,请务必使用这个指南。如果你是深度学习的新手,我们已经为初学者提供了路线图,链接到课程、阅读和其他资源。
代码尝试
DL4J是一种特定领域的语言,用于配置由多层构成的深度神经网络。一切都从MultiLayerConfiguration开始,这些MultiLayerConfiguration组织这些层和它们的超参数。
超参数是决定神经网络如何学习的变量。它们包括更新模型权重的次数、如何初始化这些权重、将哪个激活函数附加到节点、使用哪个优化算法以及模型应该学习多快。这就是一个配置的样子:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.weightInit(WeightInit.XAVIER)
.activation("relu")
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.updater(new Sgd(0.05))
// ... other hyperparameters
.list()
.backprop(true)
.build();
使用Deeplearning4j,可以通过调用NeuralNetConfiguration.Builder()上的layer方法来添加层,按照层的顺序(下面的零索引层是输入层)指定其位置、输入和输出节点的数量是nIn和nOut以及类型为:DenseLayer。
.layer(0, new DenseLayer.Builder().nIn(784).nOut(250)
.build())
一旦你已经配置好你的网络,你可以用 model.fit
来训练你的网络
先决条件
- Java (developer version) 1.7 或更高版本 (仅支持64位版本)
- Apache Maven (自动化构建和依赖管理器)
- IntelliJ IDEA 或 Eclipse
- Git
你应该安装这些来使用这个快速入门指南。DL4J针对熟悉生产部署、IDE和自动化构建工具的专业Java开发人员。如果你已经有了这些经验,使用DL4J将是最简单的。如果您是Java新手或不熟悉这些工具,请阅读下面的详细信息以帮助安装和设置。否则,跳到DL4J示例。
Java
如果你没有Java 1.7 或更高版版的Java,下载当前最新的Java Development Kit (JDK) 。用以下的命令来检查你是否有安装可兼容的Java版本。
java -version
确保你有一个64位版本的JAVA已被安装,如果你决定用32位版本来尝试,你会看到一个错误告诉你no jnind4j in java.library.path
确保JAVA_HOME 环境变量已被设置。
Apache Maven
Maven是Java项目的依赖管理和自动构建工具。它很好地与IDELJ等IDE一起工作,并允许你轻松安装DL4J项目库。按照他们的说明为您的系统安装或更新Maven最新版本。若要检查是否安装了最新版本的Maven,请输入以下内容:
mvn --version
如果你在Mac上工作,你可以简单的输入如下的命令行:
brew install maven
Maven在Java开发人员中被广泛使用,它与DL4J一起工作是非常必要的。如果你来自不同的背景,Maven对你来说是新的,请检查Apache的Maven概览和我们对非Java程序员的Maven的介绍,其中包括一些额外的疑难解答。其他构建工具,如常ivy和Dradle也可以工作,但我们对Maven支持最好。
IntelliJ IDEA
集成开发环境(IDE)允许你使用我们的API并在几个步骤中配置神经网络。我们强烈建议使用IntelliJ,它与Maven通信来处理依赖关系。IntelliJ社区版是免费的。
还有其他流行的IDE,如Eclipse和NETBeans。但是,IntelliJ是首选,如果需要的话,使用它会让你在Gitter Live Chat 上更容易找到帮助。
Git
安装Git的最新版本。如果你已经拥有Git,你可以使用Git本身更新到最新版本:
$ git clone git://git.kernel.org/pub/scm/git/git.git
几个简单步骤中的DL4J例子
- 使用命令行输入以下内容:
$ git clone https://github.com/deeplearning4j/dl4j-examples.git
$ cd dl4j-examples/
$ mvn clean install
- 打开IntelliJ并选择Import Project。然后选择dl4j-examples主要的目录(注意:以下的示例中阐述的是一个过期的仓库名为dl4j-0.4-examples。尽管如此,你将要下载和安装的仓库为 dl4j-examples)。
-
选择 ‘Import project from external model’ 并确保Maven被选择
-
通过向导选项继续。选择以jdk开头的SDK。(你也许需要点击一个加号来查看你的选项)然后点击 finish。等待IntelliJ下载完所有的依赖。你将看到右下角水平的进度条。
-
在左边文件树中选择一个例子 ,右击文件来运行
在你的工程中使用DL4J:配置POM.xml文件
为了在你自己的工程中运行DL4J,我们强烈推荐使用Maven用于Java用户,或者为scala使用SBT工具。基本的依赖集及其版本如下所示。这包括:
-
deeplearning4j-core
, 包括神经网络的实现 -
nd4j-native-platform
, CPU版本的ND4J库为DL4J提供支持 -
datavec-api
- Datavec是我们用于向量化和加载数据的库
每个Maven工程都有一个POM文件。这里是运行示例时应该出现的POM文件。
在IntelliJ内部,你需要选择你要运行的第一个深度学习4J示例。我们建议MLPClassifierLinear,因为你几乎会立即看到网络将两组数据分类在我们的UI中。GITHUB上的文件可以在这里找到。
若要运行该示例,请右键单击它并选择下拉菜单中的绿色按钮。你会看到,在IntelliJ的底部窗口,一系列的分数。最右边的数字是网络分类的错误分数。如果你的网络正在学习,那么随着它处理的每个批次,这个数字会随着时间的推移而减少。最后,这个窗口会告诉你你的神经网络模型变得有多精确:
在另一个窗口中,将出现一个图表,显示多层感知器(MLP)如何对示例中的数据进行分类。它看起来像这样:
恭喜,你已用DL4J训练了你的第一个神经网络。
接下来的步骤
- 在Gitter上加入我们。我们有三个大的社区渠道。
- DL4J Live Chat 是有关DL4J问题的主要渠道。大多数人出现在这儿。
- Tuning Help 是提供给刚开始学习神经网络的人。初学者从这访问我们。
- Early Adopters 是提供给检查和改进版本的人。警告:这个是提供给更多经验的爱好者。
- 阅读 神经网络介绍.
- 查看更详细的 全面设置指南.
- 浏览 DL4J 文档 .
- Python 爱好者 : 如果您计划在Deeplearning4j上运行基准测试,并将其与著名的Python框架[x]进行比较,请阅读这些关于如何在JVM上优化堆空间、垃圾收集以及ETL的说明。通过参照它们,你会看到至少10倍的加速训练时间。
其它链接
- Deeplearning4j artifacts on Maven Central
- ND4J artifacts on Maven Central
- Datavec artifacts on Maven Central
- Scala code for UCI notebook
故障排查
问: 我在Windows上使用64位的JAVA仍然得到 no jnind4j in java.library.path
错误
答: 你可能有不兼容的 DLLs 在你的 PATH中. 为了让 DL4J忽略这些, 你必须添加如下作为 VM 参数 (Run -> Edit Configurations -> VM Options in IntelliJ):
-Djava.library.path=""
问: 我正在运行示例,并且基于Spark的示例存在问题,例如分布式训练或datavec转换选项。
答: 你可能丢失了Spark要求的一些依赖。查看这个Stack Overflow discussion来获得一个一个潜在的依赖问题讨论。windows用户可能需要来自Hadoop的winutils.exe。 从https://github.com/steveloughran/winutils and put it into the null/bin/winutils.exe下载winutils.exe (或创建一个hadoop文件夹并添加它到HADOOP_HOME)。
故障排查: 在Windows上调试UnsatisfiedLinkError
Windows用户可能看到如下信息:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.deeplearning4j.nn.conf.NeuralNetConfiguration$Builder.seed(NeuralNetConfiguration.java:624)
at org.deeplearning4j.examples.feedforward.anomalydetection.MNISTAnomalyExample.main(MNISTAnomalyExample.java:46)
Caused by: java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html
at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5556)
at org.nd4j.linalg.factory.Nd4j.(Nd4j.java:189)
... 2 more
Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html
at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:259)
at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5553)
... 3 more
如果是这个问题,请参阅本页。在这种情况下,替换为“ND4JCPU”。
Eclipse 不使用 Maven的设置
我们推荐使用Maven 和 Intellij。如果你更喜欢Eclipse并不喜欢Maven 这里有一篇很好的博客让你过度到Eclipse配置
快速入门模版
现在,您已经了解了如何运行不同的示例,我们已经为你提供了一个模板,该模版具有一个基本的EMNIST训练器,具有早停和评估代码。
快束入问模版在此 https://github.com/deeplearning4j/dl4j-quickstart.
使用模版:
- 克隆到你的本地机器
git clone https://github.com/deeplearning4j/dl4j-quickstart.git
- 导入
dl4j-quickstart
主文件夹到 IntelliJ. - 开始编码!
Eclipse Deeplearning4j 的更多信息
Deeplearning4j是一个可以让你从一开始就可以选择一切的框架。我们不是Tensorflow(一个具有自动微分的低级数值计算库)或是Pytorch。
Deeplearning4j有几个子项目,使其易于构建端到端应用程序。
如果你想将模型部署到生产中,你可能会喜欢我们的从Keras导入的模型。
Deeplearning4j有几个子模块。这些范围从可视化UI到spark分布式训练。对于这些模块的概述,请查看Github上的Deeplearning4j示例。
如果你想要一个简单的桌面应用作为开始,你需要两件个东西:一个 nd4j backend 和 deeplearning4j-core
。更多代码请查看 simpler examples submodule.
如果你想要一个灵活的深度学习API,这有两种方式。你可以单独使用nd4j,查看我们的 nd4j 示例 或 计算图API.
如果你想要在 Spark进行分布式训练,你可以查看我们的 Spark page记住我们不会为你设置spark
如果你想要设置spark和GPU,这在很大程度上取决于你。Deeplearning4j简单的作为一个jar文件部署在一个存在的Spark集群上。
如果你想要Spark和GPU一起工作,我们推荐你看Spark with Mesos。
如果你想在移动端部署,你可以看我们的Android page。
我们为各种硬件架构部署优化后的代码。我们使用基于C++的循环,就像其他人一样。请查看C++ framework libnd4j。
Deeplearning4j有其它两个值得注意的组件:
Deeplearning4j是构建真实应用程序的端到端平台,而不仅仅是具有自动微分的张量库。如果你想要一个带有autodiff的张量库,请参阅ND4J和samediff。samediff仍然在测试,但是如果你想做出贡献,请加入我们的live chat on Gitter。
最后,如果你正在测试DL4J,请考虑进入我们的在线聊天并获取提示。DL4J有所有的模块但可能不像Python框架那样工作。你必须为一些应用从源码来构建DL4J
有任何问题请联系微信
相关推荐
西门子工业无线SCALANCE W NAT/PAT快速入门pdf,西门子工业无线SCALANCE W NAT/PAT快速入门: 工业自动化网络的飞速发展,工业无线网络IWLAN开始广泛应用到现场,这样无线网络的安全问题就日益突出。西门子SCALANCE ...
总结来说,"MyEclipse/HTML/JSP快速入门与提高"的学习资源将引导你从零基础开始,一步步掌握使用MyEclipse开发Web应用的基本技能,包括静态HTML页面的创建、动态JSP页面的编写,以及如何利用MyEclipse的工具提高开发...
《ThinkPHP5快速入门》...总结来说,《ThinkPHP5快速入门》涵盖了框架的基本结构、核心组件、常用功能及安全策略,是学习ThinkPHP5的理想起点。通过阅读本书,你可以快速掌握这个框架,为你的PHP开发之旅打下坚实基础。
### Qt/Embedded 入门教程知识点详解 ...通过了解其基础概念、版本差异、组成工具以及安装流程,初学者可以快速入门并开始开发自己的项目。无论是商业还是开源项目,Qt 都提供了丰富的功能和工具,以满足各种需求。
本教程将为你提供CANoe的快速入门指南,帮助你掌握其基本操作和功能,以便在C或C++编程环境下进行有效的CAN(Controller Area Network)通信分析。 一、CANoe简介 CANoe是一款强大的ECU(Electronic Control Unit)...
《Qt Creator快速入门》第三版详尽介绍了如何使用Qt Creator进行开发,从安装和配置环境开始,逐步引导读者学习创建项目、编写代码、设计界面、编译调试以及发布应用等步骤。书中的高清PDF版能让你在阅读过程中享受...
"天文爱好者观测快速入门手册" 本手册主要面向天文爱好者,旨在帮助他们快速入门,掌握基本的天文知识和观测技巧。作者是一名有两年多天文爱好经验的物理专业学生,旨在与读者分享自己的经验和知识。 天文学是一门...
作为初学者,快速入门Oracle需要理解其核心概念、语言基础以及管理工具。以下是一些关键知识点: 1. **Oracle简介**:Oracle是甲骨文公司开发的数据库管理系统,支持各种类型的数据存储和处理,包括结构化、半结构...
**Qt Creator快速入门(第三版)源码** 在学习和开发使用Qt的C++应用程序时,Qt Creator是一个不可或缺的工具。这个"Qt Creator快速入门(第三版)"的源码提供了丰富的学习材料,帮助初学者迅速熟悉Qt框架和Qt Creator...
PADS Professional 快速入门指南 PADS Professional 是一款功能强大且流行的 Printed Circuit Board (PCB) 设计软件,旨在帮助用户快速创建和设计复杂的电路板。以下是 PADS Professional 快速入门指南的知识点总结...
### jQuery Mobile 快速入门详解 #### 一、引言 随着移动互联网的快速发展,越来越多的应用和服务需要在各种尺寸的设备上良好运行。为了适应这种趋势,开发人员需要掌握能够跨平台使用的前端框架。jQuery Mobile ...
【Hibernate快速入门教程】 在Java开发中,Hibernate是一个非常重要的框架,它实现了对象关系映射(ORM)技术,使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据访问层的编程工作。本教程针对初学...
本快速入门指南为用户提供了必要的信息以确保正确、安全地使用CompactLogix 5370 L3控制器,适用于罗克韦尔自动化产品的新用户,尤其是那些需要在工业自动化项目中快速掌握罗克韦尔控制系统安装和应用的用户。...
本HALCON入门手册为本人于2020年初编写,旨在帮助刚开始接触HALCON,或者在一些设计中临时简单使用下HALCON的...最后,简单介绍了HALCON与C#的联合编程,便于希望使用HALCON进行windows窗体程序开发的朋友快速入门。
作为C++的快速入门教程,我们将深入探讨C++的基础概念、语法结构以及它如何与其他编程语言相比有所不同。 首先,C++是在C语言的基础上发展起来的,因此,它继承了C语言的高效性和底层控制能力。C++引入了面向对象...
《从零开始 LaTeX 快速入门》是一篇旨在帮助初学者快速掌握 LaTeX 技能的文章。作者通过自身的学习经历,分享了如何从无到有学习 LaTeX 的方法,并指出 LaTeX 的学习可以借鉴网页渲染的原理,这有助于理解 LaTeX 的...
标题:“ireport快速入门指南.pdf”为我们提供了一个关于JasperReports工具的入门级教程,特别是针对iReport这个可视化的报表设计工具。该指南旨在帮助初学者快速掌握iReport的使用,并通过实例加深理解。 描述:...
ORACLE 快速入门文档 作为一名 IT 行业大师,我将为您详细解释 Oracle 快速入门文档中的知识点。 首先,让我们从 Oracle 的基本概念开始。Oracle 是美国 Oracle 公司(甲骨文)提供的一组软件产品,以分布式数据库...