【问题标题】:Encog neural network training java too slowEncog神经网络训练java太慢
【发布时间】:2023-03-21 03:48:02
【问题描述】:

我正在训练一个神经网络来对图像进行分类,完成一次迭代需要很长时间......大约五分钟,但仍未完成。我正在使用 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);

我们将不胜感激。谢谢。

【问题讨论】:

  • 我不熟悉这个库,但熟悉机器学习及其在成像中的应用。这可能需要很长时间......
  • 嗨,很抱歉 OT,但我是从 encog 开始的,我有一些我不完全理解的东西。我可以请你一点时间帮忙吗?如果是,请查看我的问题:stackoverflow.com/questions/21847695/…。谢谢

标签: java machine-learning neural-network encog


【解决方案1】:

您的代码看起来不错,但根据您的数据,训练可能会变得任意长。从你的网络规模可以推断,你正在处理图像——现在如果你有很多图像——即使是最有效的实现也需要很长时间。 Encog 是一段相当不错的代码——默认情况下它适用于所有可用的内核,但 FANN 似乎是目前最快的 ANN 库。

你有 ~5000 个输入神经元,假设你有 ~10 个输出神经元,你有 ~2500 个隐藏神经元。所以你的网络有 (5000+1)*2500 + (2500+1)*10 权重(大约 12,500,000)。现在,假设您的训练集中有 N 个图像 - 一个 epoch 需要计算(和更新) 12,500,000 * N 个值。因此,即使您只有约 200 张图像,也需要计算 2,500,000,000 次更新。

至少有三种可能的方式:

  • 试试 FANN 库,它是最有效的库之一
  • 使用例如 PCA 降低图像的维度(因此 - 减小网络的大小)
  • 您确定需要 2500 个隐藏节点吗?很多

【讨论】:

  • 你建议多少隐藏层?我正在通过图像识别进行皮肤病诊断。
  • 我建议尽可能小。更大的数量不仅意味着更长的计算时间,而且更可能过度拟合。只需从一些小的开始,并在必要时增加其大小 - 而不是相反。
  • 我以前从未使用过 Encog - 但这还不是全部。虽然是一个很大的数字 - 那只是 2.5 GigaFLOPs。一个(不是花哨的)核心 2 Q6600 每秒可以执行 38 GigaFLOP。即使假设 Java 在原始吞吐量方面比 C/C++ 慢 - 应该可以在合理的时间内完成 1 个 epoch。
  • 现在我得到了更好的迭代率......大约 3 次迭代,持续 5 分钟......我现在想问是否可以使用原始单整数 rgb 值进行图像识别输入神经元,这样我就可以节省内存空间,还是应该将红色、绿色和蓝色值用作三个独立的神经元?
  • 您应该单独应用它们或考虑使用灰度值。还要记住正确的数据规范化/缩放。
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 2015-10-03
  • 2011-04-07
  • 1970-01-01
  • 2010-11-20
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多