我的理解是 GPU 在运行神经网络方面效率更高,但最近有人建议 GPU 仅在训练阶段需要,并且一旦训练,在 CPU 上运行它们实际上效率更高。
这是真的?
我的理解是 GPU 在运行神经网络方面效率更高,但最近有人建议 GPU 仅在训练阶段需要,并且一旦训练,在 CPU 上运行它们实际上效率更高。
这是真的?
这完全取决于您运行的软件平台,而不是神经网络或其组成对象的任何特定特征。例如,Theano 利用 GPU,因为它们针对矩阵数学进行了优化,神经网络权重和激活通常表示为。另一方面,它们也可以表示为集合,这使得它们非常适合 SQL 等基于集合的语言;我更喜欢这种方法,因为集合更灵活(例如,与矩阵不同,您可以轻松地在参差不齐的维度集合上进行操作)并且 SQL 是一种可移植的标准,可以更容易地从概念上考虑神经网络层。正如我的网名所暗示的,我使用 SQL Server,它是众多数据库服务器平台之一,可以在非常大的神经网络上进行一些严肃的数字运算,所有这些都无需使用任何 GPU 功能。很久以前,我还在 VB.Net、VB 6 和 C# 中编写了神经网络,它们有效地利用了数组,而根本没有利用 GPU。
我认为选择可能归结为您现有技能的组合、您可以访问的架构、您的可移植性要求、代码维护问题等等,而不是特定硬件组件和神经网络内部工作之间的任何明确联系. 在 SQL 中建模参差不齐的矩阵或 GPU 的矩阵处理能力可能有轻微的优势,但我认为在大多数情况下没有太大的实际差异,我也想不出一种方法来测试这种比较而不进入苹果与橘子的难题。话虽如此,在特定平台内,“GPU 仅用于训练阶段”和“一旦训练,实际上在 CPU 上运行它们实际上更有效”,这可能是真的。我无法对此发表评论,因为我仍然使用 SQL 和 .Net 堆栈并完全避免使用 Theano 等(尽管我尊重他们的能力)。我希望这会有所帮助。