package com.pintn.joone;
import org.joone.engine.FullSynapse;
import org.joone.engine.LinearLayer;
import org.joone.engine.Monitor;
import org.joone.engine.NeuralNetEvent;
import org.joone.engine.NeuralNetListener;
import org.joone.engine.SigmoidLayer;
import org.joone.engine.learning.TeachingSynapse;
import org.joone.io.MemoryInputSynapse;
import org.joone.io.MemoryOutputSynapse;
import org.joone.net.NeuralNet;
public class JooneTest_01 implements NeuralNetListener {
private NeuralNet nnet = null;
private MemoryInputSynapse inputSynapse, desiredOutputSynapse;
private MemoryOutputSynapse outputSynapse;
LinearLayer input;
SigmoidLayer hidden, output;
boolean singleThreadMode = true;
// XOR input
private double[][] inputArray = new double[][] {
{ 0.0, 0.0 },
{ 0.0, 1.0 },
{ 1.0, 0.0 },
{ 1.0, 1.0 } };
// XOR desired output
private double[][] desiredOutputArray = new double[][] {
{ 0.0 },
{ 1.0 },
{ 1.0 },
{ 0.0 } };
/**
* @param args
* the command line arguments
*/
public static void main(String args[]) {
JooneTest_01 xor = new JooneTest_01();
xor.initNeuralNet();
xor.train();
xor.interrogate();
}
/**
* Method declaration
*/
public void train() {
// set the inputs
inputSynapse.setInputArray(inputArray);
inputSynapse.setAdvancedColumnSelector(" 1,2 ");
// set the desired outputs
desiredOutputSynapse.setInputArray(desiredOutputArray);
desiredOutputSynapse.setAdvancedColumnSelector(" 1 ");
// 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(inputArray.length);
monitor.setTotCicles(5000);
monitor.setLearning(true);
long initms = System.currentTimeMillis();
// Run the network in single-thread, synchronized mode
nnet.getMonitor().setSingleThreadMode(singleThreadMode);
nnet.go(true);
System.out.println(" Total time= "
+ (System.currentTimeMillis() - initms) + " ms ");
}
private void interrogate() {
// set the inputs
inputSynapse.setInputArray(inputArray);
inputSynapse.setAdvancedColumnSelector(" 1,2 ");
Monitor monitor = nnet.getMonitor();
monitor.setTrainingPatterns(4);
monitor.setTotCicles(1);
monitor.setLearning(false);
MemoryOutputSynapse memOut = new MemoryOutputSynapse();
// set the output synapse to write the output of the net
if (nnet != null) {
nnet.addOutputSynapse(memOut);
System.out.println(nnet.check());
nnet.getMonitor().setSingleThreadMode(singleThreadMode);
nnet.go();
for (int i = 0; i < 4; i++) {
double[] pattern = memOut.getNextPattern();
System.out.println(" Output pattern # " + (i + 1) + " = "
+ pattern[0]);
}
System.out.println(" Interrogating Finished ");
}
}
/**
* Method declaration
*/
protected void initNeuralNet() {
// First create the three layers
input = new LinearLayer();
hidden = new SigmoidLayer();
output = new SigmoidLayer();
// set the dimensions of the layers
input.setRows(2);
hidden.setRows(3);
output.setRows(1);
input.setLayerName(" L.input ");
hidden.setLayerName(" L.hidden ");
output.setLayerName(" L.output ");
// Now create the two Synapses
FullSynapse synapse_IH = new FullSynapse(); /* input -> hidden conn. */
FullSynapse synapse_HO = new FullSynapse(); /* hidden -> output conn. */
// Connect the input layer whit the hidden layer
input.addOutputSynapse(synapse_IH);
hidden.addInputSynapse(synapse_IH);
// Connect the hidden layer whit the output layer
hidden.addOutputSynapse(synapse_HO);
output.addInputSynapse(synapse_HO);
// the input to the neural net
inputSynapse = new MemoryInputSynapse();
input.addInputSynapse(inputSynapse);
// The Trainer and its desired output
desiredOutputSynapse = new MemoryInputSynapse();
TeachingSynapse trainer = new TeachingSynapse();
trainer.setDesired(desiredOutputSynapse);
// 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);
nnet.addNeuralNetListener(this);
}
public void cicleTerminated(NeuralNetEvent e) {
}
public void errorChanged(NeuralNetEvent e) {
Monitor mon = (Monitor) e.getSource();
if (mon.getCurrentCicle() % 100 == 0)
System.out.println(" Epoch: "
+ (mon.getTotCicles() - mon.getCurrentCicle()) + " RMSE: "
+ mon.getGlobalError());
}
public void netStarted(NeuralNetEvent e) {
Monitor mon = (Monitor) e.getSource();
System.out.print(" Network started for ");
if (mon.isLearning())
System.out.println(" training. ");
else
System.out.println(" interrogation. ");
}
public void netStopped(NeuralNetEvent e) {
Monitor mon = (Monitor) e.getSource();
System.out.println(" Network stopped. Last RMSE= "
+ mon.getGlobalError());
}
public void netStoppedError(NeuralNetEvent e, String error) {
System.out.println(" Network stopped due the following error: "
+ error);
}
}
分享到:
相关推荐
你可以创建一个简单的Java程序来加载和训练网络,或者运行Joone提供的示例。 3. **调试与优化**:通过阅读源码,你可以了解Joone的内部运作机制,进一步进行定制化开发或性能优化。 4. **文档阅读**:虽然没有明确...
这个压缩包可能包含了关于Joone框架的源代码、文档、示例或其他相关资源。从"源码"和"工具"这两个标签来看,我们可以期待在文件中找到与编程、理解和使用Joone相关的技术细节。 Joone框架的核心是其神经网络实现,...
7. **示例与应用**:Joone提供了示例代码,展示了如何创建和训练神经网络,以及如何将它们应用于实际问题。这些示例有助于初学者快速上手,并理解神经网络在不同场景下的应用。 总结来说,Joone.jar是Java开发人员...
这个"joone.zip_joone"压缩包可能是包含了Joone库的源代码、文档或者是用户创建的示例项目,用于备份或者分享。由于没有提供具体的文件内容,我将根据Joone库的一般特性来介绍相关的知识点。 1. **神经网络基础**:...
它们提供了详细的函数说明、示例代码和最佳实践,帮助开发者理解库的使用方法,避免在编程过程中走弯路。 6. **集成开发环境(IDE)和版本管理**:在实际开发中,可能需要使用像Eclipse或IntelliJ IDEA这样的Java ...
而"samples"目录则很可能包含了一些示例项目,这些示例可以帮助初学者快速理解和使用Joone Engine,通过实际操作学习如何创建、训练和应用神经网络模型。 总的来说,Joone Engine是一个强大且灵活的Java神经网络...
同时,Joone提供详细的文档和示例代码,帮助用户快速上手。 五、适用场景 Joone Engine适用于各种领域,如图像识别、语音识别、自然语言处理、预测分析等。由于其跨平台的特性,可以在任何支持Java的系统上运行,...
JooneCompleteGuide.pdf 很可能是Joone框架的完整指南,里面可能包含了详细的使用教程、API参考以及示例,帮助开发者快速上手。Joone-ext.zip 和 joone-engine-2.0.0RC1.zip 可能分别包含了Joone的扩展库和引擎库,...
标题中的“神经网络joone_engin模式识别示范,eclipse”指的是使用Joone Engine这一开源神经网络库在Eclipse集成开发环境下实现的一个模式识别的示例。Joone Engine是一个用Java编写的神经网络框架,它提供了构建和...
而`joone-engine-2.0.0RC2-20070314.zip`则是Joone引擎的具体实现,包含了库文件和可能的示例代码,供开发者在项目中引入和使用。 总的来说,Joone框架为Java开发者提供了一个强大的工具,可以用于构建复杂的神经...
为了帮助开发者更好地理解和使用JOONE,该框架提供了详尽的文档和示例代码,覆盖了从安装、基本用法到高级特性的方方面面。JOONE的源码开放,鼓励用户根据实际需求对其进行定制和扩展,这进一步增强了其在实际项目中...
2. **Readme.txt**:这是标准的开源项目文档,通常包含项目的简介、安装指南、使用示例、许可信息等内容。对于Joone Engine,Readme文件将帮助我们快速了解如何集成和使用这个库。 3. **org** 和 **releases**:这...
Java神经网络组件,如Joone、Encog和Neuroph,为开发者提供了在Java环境中构建和训练神经网络的工具。这些开源库不仅简化了神经网络的实现,还为初学者和经验丰富的数据科学家提供了深入了解神经网络工作原理的机会...
以下是一个简单的示例,展示了如何使用JOONE创建一个神经网络并训练它进行XOR操作: ```java // 创建输入、隐藏和输出层 SigmoidLayer input = new SigmoidLayer(); SigmoidLayer hidden = new SigmoidLayer(); ...
### j2ee joone 技术论文知识点解析 #### 一、概述 本文档探讨了在J2EE平台上,如何利用JSF(JavaServer Faces)技术实现数据表控件的分页功能,以应对大数据量访问及高并发访问场景下的性能优化需求。J2EE是一个...
此外,还提供了丰富的示例代码和最佳实践,帮助读者快速上手并掌握Joone的核心功能。 ##### 1.4 致谢 本书感谢所有对Joone项目做出贡献的开发者和支持者,没有他们的努力和奉献,Joone不会取得今天的成就。 #### ...
Neural-Networks-in-Neuroph-Encog-and-JOO.pdf"文档,该文档详细分析了这三个框架在实现XOR网络时的具体代码和效果,以及"ThreeNetworks.zip"文件,其中包含了使用这三个库实现的XOR网络示例代码,可以作为实践和...
以下是一个简单的JOONE程序示例,展示了如何构建神经网络并进行训练: 1. 首先,创建输入层、隐藏层和输出层: ```java SigmoidLayer input = new SigmoidLayer(); SigmoidLayer hidden = new SigmoidLayer(); ...
**应用示例** Neuroph可用于多种应用场景,例如图像识别、文本分类、股票市场预测、语音识别等。以下是一个简单的例子,演示如何使用Neuroph创建一个多层前馈网络: 1. 导入Neuroph库:首先,你需要在项目中导入...