Neuroph初次尝试(Maven Java)

此文是阅读《神经网络与深度学习》按照书内容而进行的尝试。
因为没有接触过Java,所以某些操作可能有些多余或错误,望见谅。
创建运行过程参考https://blog.csdn.net/qq_37059483/article/details/78359540

1.开发环境搭建

1.1安装JDK

  1. 下载最新的JDK
    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    记得先accept我是windows 64所以选择最后一个。
    在这里插入图片描述
  2. 下载完毕,开始安装 ,不再赘述,目录可以更改。网上有些博客说不必安jre,我顺手安了- -,不过好像真的没必要,jdk安装完毕自带了jre。
  3. 以下是最重要的步骤,配置环境变量
    计算机右键----->属性------->高级系统设置------>环境变量
    在这里插入图片描述
  4. 点击下面的新建
    变量名为:Java_Home,变量值为jdk安装目录
    在这里插入图片描述
    ps:我很久以前装过jdk 所以环境变量配置可能有点问题 我还有一个变量
    在这里插入图片描述
    双击Path变量(依旧是在下面系统变量内),添加%Java_Home%\bin(也可以把%Java_Home%换成jdk安装目录,因为我这样失败了,两个都加上了不知道为什么ok了),有的说要;%Java_Home%\bin;加分号在前后,没有尝试,大家可以试一下。
    如果安装了jre也这样添加变量
  5. 打开cmd,输入java
    如下就是成功了,如果不是一般是第4步有问题,可以在上面的Path(用户变量)里面再添加一下jdk路径尝试下。
    在这里插入图片描述

1.2安装Maven

  1. 下载
    下载地址:http://maven.apache.org/download.cgi
    我下载的文件如图
    在这里插入图片描述
  2. 解压到想要的地方
  3. 同上面添加环境变量,系统变量,path也同理。如果不行也按照上面尝试解决。
    变量名:M2_HOME 变量值解压到的地址
    在这里插入图片描述
  4. 打开cmd,输入mvn -v ,结果如下则成功按照。在这里插入图片描述
  5. 有教程修改workplace,但是我失败了,就不再介绍。

1.3安装eclipse

  1. 下载
    下载地址:https://www.eclipse.org/downloads/
    在这里插入图片描述
  2. 安装没什么好说的

2.开始

  1. File->New->Project->next
    在这里插入图片描述
  2. √第一个->next
    在这里插入图片描述
  3. 第一个是包名前缀,第二个是项目名->finish在这里插入图片描述
  4. 剩下的参照:
    https://blog.csdn.net/qq_37059483/article/details/78359540
    有一点点不一样:
    https://maven.aliyun.com/mvn/search
    在这里插入图片描述
    在这里插入图片描述
  5. 修改pom.xml,等待加载完毕(注意要加dependencies)在这里插入图片描述
  6. 第一个右键->new->packge->web.v1(右键)->new->file
    在这里插入图片描述
    文件名为CalculatePerceptron.java
package web.v1;
 
import java.util.Arrays;
 
import org.neuroph.core.NeuralNetwork;
import org.neuroph.core.data.DataSet;
import org.neuroph.core.data.DataSetRow;
import org.neuroph.nnet.Perceptron;
/**
 * Created by 阿龙 on 2017/1/24.
 */
public class CalculatePerceptron {
	  public static void main(String args[]){
//        建立AND训练集
        DataSet trainAndSet = new DataSet(2, 1);
        trainAndSet.addRow(new DataSetRow(new double[]{0, 0}, new double[]{0}));
        trainAndSet.addRow(new DataSetRow(new double[]{0, 1}, new double[]{0}));
        trainAndSet.addRow(new DataSetRow(new double[]{1, 0}, new double[]{0}));
        trainAndSet.addRow(new DataSetRow(new double[]{1, 1}, new double[]{1}));
 
//        建立OR训练集
        DataSet trainOrSet = new DataSet(2, 1);
        trainOrSet.addRow(new DataSetRow(new double[]{0, 0}, new double[]{0}));
        trainOrSet.addRow(new DataSetRow(new double[]{0, 1}, new double[]{1}));
        trainOrSet.addRow(new DataSetRow(new double[]{1, 0}, new double[]{1}));
        trainOrSet.addRow(new DataSetRow(new double[]{1, 1}, new double[]{1}));
 
//        建立XOR训练集
        DataSet trainXorSet = new DataSet(2, 1);
        trainXorSet.addRow(new DataSetRow(new double[]{0, 0}, new double[]{0}));
        trainXorSet.addRow(new DataSetRow(new double[]{0, 1}, new double[]{1}));
        trainXorSet.addRow(new DataSetRow(new double[]{1, 0}, new double[]{1}));
        trainXorSet.addRow(new DataSetRow(new double[]{1, 1}, new double[]{0}));
 
//        建立感知机
        NeuralNetwork myPerceptron = new Perceptron(2, 1);
//        训练AND集
        myPerceptron.learn(trainAndSet);
        System.out.println("测试感知机AND集训练结果:");
        myPerceptron.save("AND_learn_result.nnet");
        testNeuralNetwork(myPerceptron, trainAndSet);
 
//        训练OR集
        myPerceptron.learn(trainOrSet);
        System.out.println("测试感知机Or集训练结果:");
        myPerceptron.save("OR_learn_result.nnet");
        testNeuralNetwork(myPerceptron, trainOrSet);
 
//        训练XOR集
//        由于XOR输入输出情况线性不可分,将无法完成训练
        myPerceptron.learn(trainXorSet);
        System.out.println("测试感知机Xor集训练结果:");
        testNeuralNetwork(myPerceptron, trainXorSet);
 
 
    }
    public static void testNeuralNetwork(NeuralNetwork nnet, DataSet tset) {
 
            for (DataSetRow dataRow : tset.getRows()) {
 
                   nnet.setInput(dataRow.getInput());
                   nnet.calculate();
                   double[ ] networkOutput = nnet.getOutput();
                   System.out.print("Input: " + Arrays.toString(dataRow.getInput()) );
                   System.out.println(" Output: " + Arrays.toString(networkOutput) );
                 }
           }
}

  1. 点run就好了
  2. 输出在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值