如何估计 Encog 使用 Levenberg-Marquardt 算法用特定样本集训练特定网络所需的 RAM 量?

Posted

技术标签:

【中文标题】如何估计 Encog 使用 Levenberg-Marquardt 算法用特定样本集训练特定网络所需的 RAM 量?【英文标题】:How to estimate the amount of RAM it will take Encog to train a particular network with a particular sample set with Levenberg-Marquardt algorithm? 【发布时间】:2012-04-10 16:56:09 【问题描述】:

我正在研究 Encog(Java 版本 3.0 和 3.1)神经网络框架,并想在我的神经网络训练中尝试 Levenberg-Marquardt 算法。然而,我的实际神经网络非常复杂自然(具有数百个输入神经元),而不是单个(我已经从数万个简化到 136 个)网络似乎可以用 Levenberg-Marquardt 训练(说没有足够的内存,而我将 2 GiB 专用于 JVM)。但是当我尝试使用简单(只有 3 个输入神经元)网络的简单合成任务时,它的表现非常好。

问题是如何估计 Encog 使用 Levenberg-Marquardt 算法训练具有特定样本集的特定网络所需的内存量?我怎么能猜出 2 GiB 中可以容纳的最大复杂度是多少(实际机器有 4 个,但 JVM 似乎无法分配超过 2 个)?

【问题讨论】:

您有大约 90 个问题没有被接受的答案。或许你可以回顾一下你之前给出的一些答案。 我猜它是来自***页面 (en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm) 的 O(NK+NN)。其中 N 是训练实例的数量,K 是权重的数量。通常,当您使用大量数据集进行训练时,您应该更多地担心时间复杂度,因为 LMA 在 O(N**3) 中。它适用于简单的问题,但是当您将 ANN 应用于大规模问题时,您应该更喜欢随机梯度下降或共轭梯度。 【参考方案1】:

我会尝试使用小尺寸,确定它使用了多少内存,然后继续将尺寸加倍,直到你看到一个模式。即它是线性的还是超线性的。

顺便说一句:我的电视有 4 GB 内存,如果您需要的话,也许是时候获得更多内存了。 ;)

【讨论】:

以上是关于如何估计 Encog 使用 Levenberg-Marquardt 算法用特定样本集训练特定网络所需的 RAM 量?的主要内容,如果未能解决你的问题,请参考以下文章

Encog中的多类SVM分类

Encog 神经网络:归一化

如何在 Java 中使用 Encog SVM 预测多个值

Encog:增量训练

足球预测程序encog:不一致的预测

Encog/neuroph 保存神经网络