【发布时间】:2026-01-30 21:35:01
【问题描述】:
我刚刚在非常强大的硬件上创建了一个非常大的神经网络,想象一下我的震惊和失望,当我意识到来自 NeuralNetworks 包的 NeuralFit[] 似乎只使用一个核心,甚至没有达到最大容量.我很伤心。我真的必须从头开始编写整个 NN 实现吗?还是我错过了一些简单的事情?
我的网络将 200 个输入输入到 300 个神经元的 2 个隐藏层,以产生 100 个输出。我知道我们在谈论数万亿次计算,但只要我知道我的硬件是弱点——可以升级。如果单独放置一段时间,它应该可以很好地处理这样一个网络的训练(4Ghz 8 线程机器,具有 24Gb 的 2000Mhz CL7 内存,在 SATA-III 上运行 RAID-0 SSD 驱动器 - 我很确定)。
想法?建议?提前感谢您的意见。
【问题讨论】:
-
“震惊”、“失望”、“伤心欲绝”。嗯,如果你问我,这听起来有点像过分的反应。无论如何,我想知道神经网络是否可以轻松并行化。有了所有这些互连,可能需要在内核之间进行大量通信,这将对速度产生相当大的影响。
-
您可能想阅读这篇关于使用 Mathematica 实现 NN 的博客 (textanddatamining.blogspot.com/2011/11/…)
-
“如果你问我,这听起来有点像一个过分的反应”——如果你从一家在非常高端的数学解决方案方面有良好记录的公司付钱买一个包裹,然后你抛出一个无法在 24 小时内进行单次迭代训练的现实世界问题,是的,我会说这是一个有点情绪化的好理由。 :-) 此外,我对自己的工作充满热情,对我来说不仅仅是数字,这不是我的工作,这是我个人的“孩子”。
-
我很欣赏这个链接,我一定会阅读它,如果实现我自己的方法是要走的路,我会认真对待它并尽我所能做到最好。我也可以在 C 中实现它,而不是在 Mathematica 中。如果有人已经为您完成了优化,那么使用包的全部意义在于避免实现我自己的。在这个特定的包装中,性能似乎没有得到优化,这很好,只是希望它在“标签上”得到更好的披露。
-
“想知道神经网络是否可以轻松并行化” - 神经网络是一些最容易并行化的算法,因为它们涉及许多独立的求和/推导,其中单个操作的结果不必共享在分支之间,并且可以被分成独立的集合,这些集合可以提供给多个内核,甚至是远程内核。这就是所有超大规模人工神经网络的完成方式。你认为 IBM 是如何完成他们的 1.6x10^9 神经元网络的?在单核上?
标签: wolfram-mathematica neural-network mathematical-optimization mathematica-8