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框架学习
发布评论