示例教程

简要介绍DL4J中的可用示例。

DL4J示例调研

DL4J的Github仓库有很多示例可以涵盖它的功能。快速入门向你展示了如何设置Intellij并克隆仓库。本页提供这些例子中的一些概述。

DataVec 示例

大多数示例都使用DataVec,这是一个通过归一化,标准化,搜索和替换,列洗牌和向量化 预处理和清洗数据 的工具包。为神经网络读取原始数据并将其转换为DataSet对象通常是训练该网络的第一步。如果你不熟悉DataVec,这里有一个描述和一些有用的例子的链接。

IrisAnalysis.java

本例采用同名花卉品种的标准Iris数据集,其相关测量值是萼片长度、萼片宽度、花瓣长度和花瓣宽度。它从相对较小的数据集构建一个Spark RDD,并对其进行分析。

显示代码

BasicDataVecExample.java

加载数据到一个Spark RDD的示例。所有 DataVec 转换操作都使用Spark RDD。这里我们使用DataVec来过滤数据,应用时间转换和删除列。

显示代码

PrintSchemasAtEachStep.java

这个例子显示了打印概要工具,这些工具对于可视化和确保转换的代码行为符合预期是有用的。

显示代码

JoinExample.java

在传递传递数据集到一个神经网络之前,你可能需要连接数据集。你可以用DataVec实现,这个例子告诉你如何实现。

显示代码

LogDataExample.java

这是使用DataVec解析日志数据的示例。明显的使用场景是是网络安全和客户关系管理。

显示代码

MnistImagePipelineExample.java

这个例子是从下面的视频中演示的,它展示了ParentPathLabelGenerator和ImagePreProcessing缩放器。

显示代码

PreprocessNormalizerExample.java

此示例演示了DataVec中可用的预处理特征。

显示代码

CSVExampleEvaluationMetaData.java

DataMeta数据跟踪——即查看每个示例的数据来自何处——在跟踪导致错误和其他问题的格式错误的数据时非常有用。此示例演示RecordMetaData类中的功能。

显示代码

DeepLearning4J 示例

为了构建一个神经网络,你将使用多层网络或计算图。这两种选项都使用Builder接口工作。下面描述了几个例子中的亮点。

MNIST dataset of handwritten digits

MNIST是深度学习的入门。简单,直接,重心在于图像识别,神经网络做得很好的任务。

MLPMnistSingleLayerExample.java

这是一个用于识别数字的单层感知器。请注意,这会从包含数据集的二进制包中提取图像,这是数据提取的一种特殊情况。

显示代码

MLPMnistTwoLayerExample.java

MNIST的两层感知器,展示对于一个给定的数据集有不止一个有用的网络。

显示代码

Feedforward Examples

通过前馈神经网络的数据流, 通过隐藏层从输入到输出的单向传递。

这些网络可用于各种各样的任务,这取决于它们被配置。除了对MNIST数据进行图像分类之外,这个目录还有演示回归、分类和异常检测的示例。

显示代码

Convolutional Neural Networks

卷积神经网络主要用于图像识别,虽然它们也适用于声音和文本。

AnimalsClassification.java

此示例可以使用LeNet或AlexNet运行。

显示代码

保存和加载模型

在大量训练数据上训练网络需要时间。幸运的是,你可以保存一个经过训练的模型并加载模型以供以后的训练或推断。

SaveLoadComputationGraph.java

演示了保存和加载用计算图构建的神经网络。

显示代码

SaveLoadMultiLayerNetwork.java

演示如何保存和加载用多层网络构建的神经网络。

保存/加载一个已训练的模型并传入一个新的输入

我们的视频系列显示了包括保存和加载模型以及推理的代码。

我们的YouTube栏目

定制损失函数和层

你需要添加一个不可用的或是没有预构建的损失函数吗?查看这些示例。

CustomLossExample.java

显示代码

CustomLossL1L2.java

显示代码

Custom Layer

你需要添加一个在DL4J中没有的特征的层吗?这个例子展示了如何开始。

CustomLayerExample.java

显示代码

自然语言处理

我们也有自己的自然语言处理神经网络

GloVe

用于词表示的全局向量对于检测词之间的关系是有用的。

显示代码

Paragraph Vectors

单词的矢量化表示。这里有描述。

显示代码

Sequence Vectors

表示句子的一种方式是单词序列。

显示代码

Word2Vec

这里有描述

显示代码

数据可视化

T-分布随机相邻嵌入(T-SNE)对于数据可视化是有用的。我们在NLP部分包括一个例子,因为词相似性可视化是一种常用的用法。

显示代码

循环神经网络

循环神经网络可用于处理时间序列数据或其他顺序馈送的数据,如视频。循环神经网络的示例文件夹有以下内容:

BasicRNNExample.java

学习字符串的循环神经网络。

显示代码

LSTMCharModellingExample.java

将莎士比亚的全部作品作为字符序列,并训练神经网络逐字创作“莎士比亚”。

显示代码

AdditionRNN.java

这个例子训练一个神经网络做加法。

显示代码

RegressionMathFunctions.java

这个例子训练一个神经网络来执行各种数学运算。

显示代码

UCISequenceClassificationExample.java

一个公开的六类时间序列数据集,循环,向上等,例如,一个学习分类时间序列的RNN示例。

显示代码

VideoClassificationExample.java

自动驾驶车辆如何区分行人、停车标志和绿灯?在一组视频上训练卷积和循环层的复杂神经网络。实况车载视频传递给训练好的网络,并且基于来自神经网络的目标检测的决策确定车辆动作。

这个例子类似,但简化了。它结合卷积、最大池、密连(前馈)和循环(LSTM)层来对视频中的帧进行分类。

显示代码

SentimentExampleIterator.java

该情感分析实例使用词向量和循环神经网络将情感分类为正或负。

显示代码

在Spark上分布式训练

DL4J支持使用Spark集群进行网络训练。这里是例子。

MnistMLPExample.java

这是一个多层感知机对手写数字的MNIST数据集进行训练的例子。

显示代码

SparkLSTMCharacterExample.java

在Spark上的一个LSTM循环网络

显示代码

ND4J 示例

ND4J是张量处理库。它可以被认为是JVM版的Numpy。神经网络通过处理和更新多维数值数组来工作。在典型的神经网络应用程序中,您使用DataVec提取并转换数据为数字。使用的类是RecordReader。一旦需要将数据传递到神经网络,通常使用RecordReaderDataSetIterator。RecordReaderDataSetIterator返回DataSet对象。DataSet由输入特征和标签的NDArray组成。

学习算法和损失函数作为ND4J操作被执行。

基本的ND4J示例

这是一个带有创建和操作NDArrays示例的目录

显示代码

强化学习示例

深度学习算法已经学会了使用强化学习来玩《Space Invaders》和《Doom》。DL4J/RL4J强化学习的例子在这里可用:

显示代码

Last updated