import java.io.File;
import org.joone.engine.FullSynapse;
import org.joone.engine.LinearLayer;
import org.joone.engine.Monitor;
import org.joone.engine.SigmoidLayer;
import org.joone.engine.learning.TeachingSynapse;
import org.joone.io.FileInputSynapse;
import org.joone.io.FileOutputSynapse;
import org.joone.io.InputSwitchSynapse;
import org.joone.net.NeuralNet;
public class Main {
private NeuralNetnnet = null;
private FileInputSynapse inputSynapse1, inputSynapse2, inputSynapse3;
private FileInputSynapse desiredSynapse1, desiredSynapse2, desiredSynapse3;
// private MemoryOutputSynapse outputSynapse;
private InputSwitchSynapse inputSw, desiredSw;
private static String inputFile = "src/test.txt";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Main m = new Main();
m.test();
m.train();
}
public void train() {
// get the monitor object to train or feed forward
Monitor monitor = nnet.getMonitor();
// set the monitor parameters
monitor.setLearningRate(0.8);
monitor.setMomentum(0.3);
monitor.setTrainingPatterns(4);
monitor.setTotCicles(1000);
monitor.setLearning(true);
nnet.addNeuralNetListener(new Test());
interrogate();
interrogate();
interrogate();
}
private void interrogate() {
// neuralNet is an instance of NeuralNet
Monitor monitor=nnet.getMonitor();
monitor.setTotCicles(1);
monitor.setLearning(false);
FileOutputSynapse output=new FileOutputSynapse();
// set the output synapse to write the output of the net
output.setFileName("src/xorOut.txt");
// inject the input and get the output
if(nnet!=null) {
nnet.addOutputSynapse(output);
System.out.println(nnet.check());
nnet.start();
monitor.Go();
nnet.join();
}
}
public void test() {
LinearLayerinput = new LinearLayer();
SigmoidLayerhidden = new SigmoidLayer();
SigmoidLayeroutput = new SigmoidLayer();
input.setRows(2);
hidden.setRows(3);
output.setRows(1);
input.setLayerName("inputLayer");
hidden.setLayerName("hiddenLayer");
output.setLayerName("outputLayer");
FullSynapse synapse_IH = new FullSynapse();/* input -> hidden conn. */
FullSynapse synapse_HO = new FullSynapse();/* hidden -> output conn. */
input.addOutputSynapse(synapse_IH);
hidden.addInputSynapse(synapse_IH);
hidden.addOutputSynapse(synapse_HO);
output.addInputSynapse(synapse_HO);
inputSynapse1 = new FileInputSynapse();
inputSynapse2 = new FileInputSynapse();
inputSynapse3 = new FileInputSynapse();
inputSynapse1.setInputFile(new File(inputFile));
inputSynapse1.setName("input1");
inputSynapse1.setAdvancedColumnSelector("1-2");
inputSynapse1.setFirstRow(1);
inputSynapse1.setLastRow(4);
inputSynapse2.setInputFile(new File(inputFile));
inputSynapse2.setName("input2");
inputSynapse2.setAdvancedColumnSelector("1-2");
inputSynapse2.setFirstRow(2);
inputSynapse2.setLastRow(3);
inputSynapse3.setInputFile(new File(inputFile));
inputSynapse3.setName("input3");
inputSynapse3.setAdvancedColumnSelector("1-2");
inputSynapse3.setFirstRow(4);
inputSynapse3.setLastRow(4);
inputSw = new InputSwitchSynapse();
inputSw.addInputSynapse(inputSynapse1);
inputSw.addInputSynapse(inputSynapse2);
inputSw.addInputSynapse(inputSynapse3);
input.addInputSynapse(inputSw);
// The Trainer and its desired output
desiredSynapse1 = new FileInputSynapse();
desiredSynapse2 = new FileInputSynapse();
desiredSynapse3 = new FileInputSynapse();
desiredSynapse1.setInputFile(new File(inputFile));
desiredSynapse1.setName("desired1");
desiredSynapse1.setAdvancedColumnSelector("3");
desiredSynapse1.setFirstRow(1);
desiredSynapse1.setLastRow(4);
desiredSynapse2.setInputFile(new File(inputFile));
desiredSynapse2.setName("desired2");
desiredSynapse2.setAdvancedColumnSelector("3");
desiredSynapse2.setFirstRow(2);
desiredSynapse2.setLastRow(3);
desiredSynapse3.setInputFile(new File(inputFile));
desiredSynapse3.setName("desired3");
desiredSynapse3.setAdvancedColumnSelector("3");
desiredSynapse3.setFirstRow(4);
desiredSynapse3.setLastRow(4);
desiredSw = new InputSwitchSynapse();
desiredSw.addInputSynapse(desiredSynapse1);
desiredSw.addInputSynapse(desiredSynapse2);
desiredSw.addInputSynapse(desiredSynapse3);
TeachingSynapse trainer = new TeachingSynapse();
trainer.setDesired(desiredSw);
// Now we add this structure to a NeuralNet object
nnet = new NeuralNet();
nnet.addLayer(input, NeuralNet.INPUT_LAYER);
nnet.addLayer(hidden, NeuralNet.HIDDEN_LAYER);
nnet.addLayer(output, NeuralNet.OUTPUT_LAYER);
nnet.setTeacher(trainer);
output.addOutputSynapse(trainer);
}
}
import org.joone.engine.Monitor;
import org.joone.engine.NeuralNetEvent;
import org.joone.engine.NeuralNetListener;
public class Test implements NeuralNetListener {
@Override
public void cicleTerminated(NeuralNetEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void errorChanged(NeuralNetEvent e) {
// TODO Auto-generated method stub
Monitor mon = (Monitor)e.getSource();
System.out.println("Cycle: "+(mon.getTotCicles()-mon.getCurrentCicle())+" RMSE:"+mon.getGlobalError());
}
@Override
public void netStarted(NeuralNetEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Training...");
}
@Override
public void netStopped(NeuralNetEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Stopped");
}
@Override
public void netStoppedError(NeuralNetEvent arg0, String arg1) {
// TODO Auto-generated method stub
}
}
分享到:
相关推荐
JOONE(Java Object Oriented Neural Network)是sourceforge上一个用java语言迅速开发神经网络的最新工具包
发现joone的jar包资源很少,就上传了,joone-engine.jar发现joone的jar包资源很少,就上传了,joone-engine.jar
发现joone的jar包资源很少,就上传了,joone-engine.jar
joone JAVA中的开源神经网络框架 joone JAVA中的开源神经网络框架
java神经元网络框架(JOONE),是一款稳定的java针对于深度学习的框架
Joone、Encog 和 Neuroph是三个著名的开源的java的神经网络的组件,各有特点。这里给出了三个开源代码的基于XOR的训练和测试过程。对于初涉神经网络的程序员是个很好的学习资料。
java 人工智能开发的 joone jar 包
1. joone文件夹中是官方网站提供的开发包和工具 2. joone-javadoc.zip压缩文件是存放了api(英文版,暂时没找到中文版) 3. XOR_using_NeuralNet.java文件是一个简单的例子(这个例子很好,我找了好久)
LTSM需要的jar包joone,没用过,不知道好用不,不过自带API
joone1.2.1-java包是一个用来编写神经网络的包。
包含joone jar包以及API文档,包含joone jar包以及API文档
关于神经网路引擎的开发demo,自己整理编写的一个简单模式识别,与或运算的
Joone官方所有资源在这里:https://sourceforge.net/projects/joone/files/?source=typ_redirect,源码和jar包在这里:https://sourceforge.net/projects/joone/files/joone-engine/
下载后解压,直接复制到maven仓库就能用,本人正在使用,这个是从我的maven仓库拷贝出来的
matlab在图像处理方面显得无比的强大,但是不要忘了,java也可以实现神经网络,对于图像处理方面非常有用。这里主要包括了jar包以及文档。
这是一个神经网络的开发工具
joone可以用到神经网络里面去,有文档的
一个用java 编写的功能强大的神经网络类库,使用方便