admin管理员组

文章数量:1794759

神经网络java框架学习

神经网络java框架学习

1. java神经网络框架 Neuroph

  Neuroph是轻量级的Java神经网络的框架,可以用来模拟常见的神经网络架构。Neuroph包含一个开源的java类库和少量对应基本神经网络概念的基类,以及easyNeurons GUI工具。 Neuroph Documentation

2. 神经网络开源框架 JOONE

  JOONE(Java Object Oriented Neural Network)是sourceforge上一个用java语言迅速开发神经网络的开源项目。JOONE支持很多的特性,比如多线程和分布式计算,使用的是BP算法进行迭代计算参数,这意味着可以JOONE可以利用多处理器或是多计算机来均衡负载。   java版本的神经网络——开源框架JOONE实践


  • JOONE 主要有三个大的模块:

    • joone-engine:joone的核心模块
    • joone-editor:joone的GUI开发环境。图形界面建立神经网络模型,可以进行训练和验证。 JOONE中提供了一个用joone-editor建立XOR网络模型的例子。
    • joone-distributed-environment:joone 用于支持分布式计算的模块。

    基于 JOONE 快速开发神经网络

    用Java开源项目JOONE实现人工智能编程

3. Java神经网络框架 Encog for Java

  Encog是一种先进的神经网络和漫游编程库。 Encog可以单独使用或者建立神经网络或HTTP爬虫程序。集成了支持向量机(SVM)、人工神经网络、遗传算法、贝叶斯网络、隐马尔可夫模型(HMM)、遗传编程和遗传算法。 ENncog Documentation

4. 三种框架对比

Benchmarking and Comparing Encog, Neuroph and JOONE Neural Networks

Comparing Neural Networks in Neuroph, Encog and JOONE - Encog性能更好,中间层算法更丰富,适合实际工程应用 - Neuroph易于学习,图形界面易操作,适合神经网络初学者理解原理

5. Encog

github - encog-java-core

简单XOR demo

import org.encog.Encog; import org.encog.enginework.activation.ActivationReLU; import org.encog.enginework.activation.ActivationSigmoid; import org.encog.ml.data.MLData; import org.encog.ml.data.MLDataPair; import org.encog.ml.data.MLDataSet; import org.encog.ml.data.basic.BasicMLDataSet; import org.encog.neuralworks.BasicNetwork; import org.encog.neuralworks.layers.BasicLayer; import org.encog.neuralworks.training.propagation.resilient.ResilientPropagation; public class XORHelloWorld { /** * 输入数据. */ public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 }, { 0.0, 1.0 }, { 1.0, 1.0 } }; /** * 期望输出. */ public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } }; /** * 主程序. */ public static void main(final String args[]) { // 创建神经网络. BasicNetwork network = new BasicNetwork(); network.addLayer(new BasicLayer(null,true,2)); network.addLayer(new BasicLayer(new ActivationReLU(),true,5)); network.addLayer(new BasicLayer(new ActivationSigmoid(),false,1)); network.getStructure().finalizeStructure(); network.reset(); // 创建训练集. MLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL); // 训练神经网络. final ResilientPropagation train = new ResilientPropagation(network, trainingSet); int epoch = 1; do { train.iteration(); System.out.println("Epoch #" + epoch + " Error:" + train.getError()); epoch++; } while(train.getError() > 0.01); train.finishTraining(); // 测试神经网络. System.out.println("Neural Network Results:"); for(MLDataPair pair: trainingSet ) { final MLData output = networkpute(pair.getInput()); System.out.println(pair.getInput().getData(0) + "," + pair.getInput().getData(1) + ", actual=" + output.getData(0) + ",ideal=" + pair.getIdeal().getData(0)); } Encog.getInstance().shutdown(); } }

本文标签: 神经网络框架java