Deeplearning4j初探-MLPClassifierLinear实例探索记录

    Deeplearning4j(官网地址)是一个Java平台上的机器学习库。初学人工智能,不是很懂,先来探索一下Deeplearning4j提供的示例代码。首先把官方提供的示例源码从GitHub(https://github.com/deeplearning4j/dl4j-examples)上面clone下来。然后倒入maven工程。在org.deeplearning4j.examples.feedforward包下面找到MLPClassifierLinear类,并运行它,可以看到这样的结果(有两个窗口,这个是测试集的结果):


Deeplearning4j初探-MLPClassifierLinear实例探索记录_第1张图片
运行结果之一

    可以看到坐标系中不同区域的点被分成两类。当然看起来这个如果用普通的方法能更简单的做这个事情。但是如果使用机器学习的方式是不是感觉立刻高大上了呢。

    回到代码,看这个类名应该是一个多层感知线性分类器示例,什么是线性分类器呢?好吧,目前我也不是很明白/(ㄒoㄒ)/~~,搜了一下大概是如果如果分类边界是线性的,就用线性分类器。这个线不一定是直线,也可以是某个阈值,或者平面(三维度的情况)等,就像一刀两段:-D这样。然后还有一个多层感知的概念,多层感知器(Multilayer Perceptron,缩写MLP)是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量。MLP可以被看作是一个有向图,由多个的节点层所组成,每一层都全连接到下一层。除了输入节点,每个节点都是一个带有非线性激活函数的神经元(或称处理单元)(摘自维基百科)。意思是它是一个有输入和输出神经网络,那多层感知线性分类器是不是就可以理解成输入一些点的坐标,用神经网络去区分这个点属于哪一个区域或者说哪一类(区分的边界是线性的)的一个处理过程。

    再看代码,main方法中首先定义了一些参数,这个我们先跳过,后面会用到。接下来是读取数据集(不知道如何插代码,直接复制格式很乱/(ㄒoㄒ)/~~),这个数据集是官方示例自带的:


Deeplearning4j初探-MLPClassifierLinear实例探索记录_第2张图片
读取数据集的代码

     接下来是关键,配置神经网络:


Deeplearning4j初探-MLPClassifierLinear实例探索记录_第3张图片
神经网络配置

    可以看到,第二行给了一个种子,貌似随便给个就行。接下来是优化迭代数,目前还没搞懂它的作用。然后就是选择优化权重的算法,这里是随机梯度下降,并且在后面设置了学习速率,也就是每次取值变化的步长。随机梯度下降算法谷歌了一下,是梯度下降算法的一种。之后梯度优化算法并设置了动量值。

    接下来添加神经网络层,每层有输入和输出的数量,轴突权重初始化方法,激活函数等。在最后又添加了一个输出层。激活函数是reLU(Rectified Linear Unit),线性整流函数。而XAVIER是一种轴突权重的初始化方法。随后对神经网络初始化和训练:


Deeplearning4j初探-MLPClassifierLinear实例探索记录_第4张图片
神经网络初始化和训练

    接下来就是对训练成果进行测试了,


Deeplearning4j初探-MLPClassifierLinear实例探索记录_第5张图片
测试神经网络

代码运行到这了可以看到测试结果的评价。MLPClassifierLinear后面的代码是绘制图形界面,也就是最初看到的图形界面,就不做记录了。

你可能感兴趣的:(Deeplearning4j初探-MLPClassifierLinear实例探索记录)