[英]Encog neural network training java too slow
我正在训练一个神经网络来对图像进行分类,并且完成一次迭代所需的时间太长了……大约五分钟,但仍然没有完成。 我正在使用Encog 3.1。 我的代码有问题吗?
BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(null,true,5625));
network.addLayer(new BasicLayer(new ActivationSigmoid(),true,(intIdealCount+5625)/2));
network.addLayer(new BasicLayer(new ActivationSigmoid(),true,intIdealCount));
network.getStructure().finalizeStructure();
这是我的训练代码:
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);
任何答复将不胜感激。 谢谢。
您的代码看起来不错,但是根据您的数据,训练可能会变得任意长。 从网络的规模可以推断出,您正在使用图像-现在,如果您有很多图像,那么即使最有效的实现也将永远花费。 Encog是一段非常不错的代码-默认情况下,它可以在所有可用内核上运行,但是FANN似乎是目前ANN最快的库。
您有〜5000个输入神经元,假设您有〜10个输出神经元,则有〜2500个隐藏神经元。 因此,您的网络具有(5000 + 1)* 2500 +(2500 + 1)* 10的权重(约12,500,000)。 现在,假设您的训练集中有N张图像-一个纪元需要计算(和更新)12,500,000 * N个值。 因此,即使您只有约200张图像,也要进行2,500,000,000次更新。
至少有三种可能的方式:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.