Tag: 神经网络

加快Java中的数学计算

我有一个用Java编写的神经网络,它使用如下定义的sigmoid传递函数: private static double sigmoid(double x) { return 1 / (1 + Math.exp(-x)); } 这在使用网络进行训练和计算的过程中被多次调用。 有没有办法加速这个? 这并不是说它很慢,只是它被大量使用,所以这里的一个小优化将是一个很大的整体收益。

神经网络需要学习多少个时代? (包括测试结果)

好吧,让我先说一下,我很清楚这取决于很多因素,我正在寻找有经验的人的一些一般指导方针。 我的目标不是制作一个可以为我计算数字平方的神经网络,但我认为这是一个很好的实验,看看我是否正确实现了反向传播算法。 这看起来是个好主意吗? 无论如何,我担心我没有正确地实现学习算法(完全)。 我的测试(结果): 训练数据 :使用Java的随机数在500和0.999之间随机生成500个数字 网络拓扑 : 3层具有1个输入神经元,5个隐藏神经元,1个输出神经元 权重:全部生成为-1到1之间的随机值(java.util.Random.nextDouble()* 2 – 1;) 使用偏置节点:(numOfInputs + 1),以便输入[input.length -1] = 1 激活function :Sigmoid 学习率 :如下面的结果代码所示 没有实施任何动力等 结果: Epochs: 10,000 Learning Rate .25 0.5 = [0.24203878039631344] 0.9 = [0.7942587190918747] 0.1 = [-0.005433286011774396] Changed learning rate to 0.3 0.5 = [0.2891542106869196] 0.9 = [0.8159817287374298] 0.1 = [-0.03614377685205278] Changed […]

Encog – 如何加载神经网络的训练数据

我在行动中看到的NeuralDataSet对象并不是XOR,只有两个小数据数组……我无法从MLDataSet的文档中找到任何东西。 似乎一切都必须立即加载。 但是,我想循环训练数据,直到我达到EOF然后将其计为1个纪元。但是,我所看到的所有数据必须从头开始加载到1个2D数组中。 我怎么能绕过这个? 我已经读过这个问题了,答案并没有真正帮助我 。 除此之外,我还没有在这里找到类似的问题。

将PMML – 模型(人工神经网络)转换为Java代码

我有一个训练有素的人工神经网络(ANN)的PMML文件。 我想创建一个Java方法,它只接受输入并返回目标值。 这似乎很容易,但我不知道如何实现它。 PMML版本= 3.0 更新:24.05.2013 我尝试使用jpmml Java API。 这就是我做的: (1)通过Maven Central Repository( 链接 )下载三个.Jar文件: PMML经理-1.0.2.jar PMML模型-1.0.2.jar PMML评价器-1.0.2.jar (2)使用eclipse“配置构建路径”并添加了这三个外部.Jar (3)导入名为“text.xml”的PMML文件(人工神经网络(ANN))PMML version =“3.0” (4)试图运行jpmml-project提供的示例“ TreeModelTraversalExample.java ” 显然它由于某些原因不起作用: 提到的例子不适用于ANN。 如何改写呢? 我的PMML文件是XML格式的。 它是正确的格式吗? 我不知道如何处理或添加Java API。 我应该在eclipse中通过“配置构建路径”添加它们吗? 明显的事实#2,我不知道我做了什么:-) 再次感谢和最亲切的问候。 斯特凡

如何使用Encog规范化CSV文件?

我需要规范化CSV文件。 我跟着Jeff Heaton写的这篇文章 。 这是(部分)我的代码: File sourceFile = new File(“Book1.csv”); File targetFile = new File(“Book1_norm.csv”); EncogAnalyst analyst = new EncogAnalyst(); AnalystWizard wizard = new AnalystWizard(analyst); wizard.wizard(sourceFile, true, AnalystFileFormat.DECPNT_COMMA); final AnalystNormalizeCSV norm = new AnalystNormalizeCSV(); norm.analyze(sourceFile, false, CSVFormat.ENGLISH, analyst); norm.setProduceOutputHeaders(false); norm.normalize(targetFile); 我的代码和文章之间的唯一区别是这一行: norm.setOutputFormat(CSVFormat.ENGLISH); 我试图使用它,但似乎在Encog 3.1.0中,该方法不存在。 我得到的错误是这个(看起来问题是行norm.normalize(targetFile) : Exception in thread “main” org.encog.app.analyst.AnalystError: Can’t find column: 11700 […]

帮助Neuroph神经网络

对于我的研究生研究,我正在创建一个训练识别图像的神经网络。 我要做的不仅仅是采用RGB值网格,下采样,并将它们发送到网络的输入,就像许多例子一样。 我实际上使用了超过100个独立训练的神经网络来检测线条,阴影图案等特征。更像是人眼,它到目前为止工作得非常好! 问题是我有相当多的训练数据。 我展示了超过100个汽车外观的例子。 然后是100个人的样子。 然后超过100个狗的样子,等等。这是相当多的训练数据! 目前我在大约一周的时间内开始训练网络。 由于我需要调整和重新训练,这有点像我的进步。 我使用的是Neuroph ,作为低级神经网络API。 我正在运行双四核机器(16核超线程),所以这应该很快。 我的处理器百分比仅为5%。 Neuroph表现有什么技巧吗? 还是Java性能一般? 建议? 我是一名认知心理学博士生,作为一名程序员,我态度不错,但对性能编程知之甚少。

在神经网络上工作

是否有必要仅为神经网络采用二进制训练集?

Java中的XOR神经网络

我正在尝试用Java中的XOR函数实现和训练具有反向传播的五神经元神经网络。 我的代码(请原谅它的丑陋): public class XORBackProp { private static final int MAX_EPOCHS = 500; //weights private static double w13, w23, w14, w24, w35, w45; private static double theta3, theta4, theta5; //neuron outputs private static double gamma3, gamma4, gamma5; //neuron error gradients private static double delta3, delta4, delta5; //weight corrections private static double dw13, dw14, dw23, dw24, […]

如何将multithreading应用于反向传播神经网络训练?

对于我的大学项目,我正在创建一个神经网络,可以对信用卡交易是否具有欺诈性的可能性进行分类。 我正在接受反向传播训练。 我用Java写这个。 我想应用multithreading,因为我的电脑是四核i7。 这让我花了几个小时的训练,看到我的大部分核心闲置。 但是,我如何将multithreading应用于反向传播? Backprop通过网络向后调整错误来工作。 必须先完成一层,然后才能继续。 有什么方法可以修改我的程序来做多核背景吗?

从哪里开始使用神经网络进行手写识别?

我一直在努力学习神经网络一段时间,我可以在线了解一些基本的教程。 现在我想用神经网络开发在线手写识别。 所以我不知道从哪里开始? 我需要一个非常好的指导。 最后我是java程序员。 你有什么建议我这样做?