神经网络 JAVA工具包 joone 例程

神经网络 JAVA工具包 joone 例程

初接触joone,根据网上找到的使用教程及官方API所写的使用例程:

  • 新建BPNN类:
//package myBPNN;

import java.io.*;
import org.joone.engine.*;
import org.joone.engine.learning.TeachingSynapse;
import org.joone.io.*;
import org.joone.net.*;

/**BPNN类,实现了神经网络初始化,训练,测试等方法
 * 输入为0~1之间的double数(组)
 * 输出为0~1之间的double数(组)
 * 使用的接口方法可自定义执行内容
 * */
public class BPNN  implements NeuralNetListener,Serializable {
   
    //序列号用于检查兼容性
    private static final long serialVersionUID = -3472219226214066504L;
    //神经网络成员
    private NeuralNet nnet = null;
    //神经网络保存路径
    private String NNet_Path = null;

    /**初始化神经网络 
     * String NNet_Path 神经网络存放路径
     * int InputNum     输入层神经元个数
     * int HiddenNum    隐藏层神经元个数
     * int OutputNum    输出层神经元个数
     * */
    public void Init_BPNN(String NNet_Path,int InputNum,int HiddenNum,int OutputNum) {
        //设置新网络的保存路径
        this.NNet_Path = NNet_Path;
        //新建三个Layer,分别作为输入层,隐藏层,输出层
        LinearLayer input = new LinearLayer();
        SigmoidLayer hidden = new SigmoidLayer();
        SigmoidLayer output = new SigmoidLayer();
        //设置每个Layer包含的神经元个数
        input.setRows(InputNum);
        hidden.setRows(HiddenNum);
        output.setRows(OutputNum);
        //新建两条突触,用于连接各层
        FullSynapse synapse_IH = new FullSynapse();
        FullSynapse synapse_HO = new FullSynapse();
        //连接输入-隐藏,隐藏-输出各层
        input.addOutputSynapse(synapse_IH);
        hidden.addInputSynapse(synapse_IH);
        hidden.addOutputSynapse(synapse_HO);
        output.addInputSynapse(synapse_HO);
        //新建一个神经网络,并添加输入层,隐藏层,输出层
        nnet = new NeuralNet();
        nnet.addLayer(input, NeuralNet.INPUT_LAYER);
        nnet.addLayer(hidden, NeuralNet.HIDDEN_LAYER);
        nnet.addLayer(output, NeuralNet.OUTPUT_LAYER);
    }
    /**使用磁盘文件训练新建的神经网络,需与Init_BPNN搭配使用
     * String TrainFile 训练文件存放路径
     * int TrainLength  训练文件的行数
     * double Rate      神经网络训练速度
     * double Momentum  神经网络训练动量
     * int TrainCicles  神经网络训练次数
     * */
    public void Train_BPNN(String TrainFile,int TrainLength,double Rate,double Momentum,int TrainCicles){   
        //获取输入层
        Layer input = nnet.getInputLayer();     
        //新建输入突触
        FileInputSynapse trains = new FileInputSynapse();
        //设置输入文件
        trains.setInputFile(new File(TrainFile));
        //设置使用的列数,文件第1,2,3,4列作为训练的输入
        trains.setAdvancedColumnSelector("1,2,3,4");

        //获取输出层
        Layer output = nnet.getOutputLayer();
        //新建输入突触
        FileInputSynapse target = new FileInputSynapse();
        //设置输入文件
        target.setInputFile(new File(TrainFile));
        //设置使用的列数,文件第5,6列作为训练的目标
        target.setAdvancedColumnSelector("5,6");

        //新建训练突触
        TeachingSynapse trainer 
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值