0

我想通过编写一个程序来玩不同类型的网络来探索神经网络。到目前为止,我已经用 C++ 编写了一个基本的感知器。据我了解,神经网络可能需要大量的计算能力来完成相当小的任务,所以优化是一个问题,或者至少我想认真对待这个想法,而不像 gpu 编程那样走极端。

我很喜欢用 Java 编程,而用 C++ 则更少,但无论如何我都想获得更多的经验。

我的问题:

鉴于我可以用 Java 更快地编写主程序,但我担心速度。用 Java 编写主程序并用 C++ 编写更密集的部分,还是用 C++ 编写整个程序更有意义?

我没有更喜欢一种语言而不是另一种语言的用户界面要求(即我不打算将其粘贴在网络应用程序中)。

**没有其他人会使用它,因为已经有更多专业的开源版本可用(FANN/Encog)。这纯粹是为了我的娱乐/学习。我想学习更多的 C++,所以我想至少写一些如果它的话(尽管如果有人觉得完全用 Java 写它更有意义,我会很想知道为什么。)

4

2 回答 2

1

这是一个相当主观的问题,并不适合 SO,但我会试一试。

根据您的实施,您可能会发现自己受到带宽和延迟等因素的限制。如果我是你,我会尽可能多地用你熟悉的语言编写它,分析它,然后回来用更快的东西重写慢的部分,同时考虑到优化。

这是我对一般预期受 CPU 限制的项目所遵循的优化过程。

由于您这样做是为了更好地掌握 C++,因此在整个过程中使用 C++ 而不是 java 可能会对您有所帮助,并在以后优化其中的部分内容,但神经网络可能不是一个非常“初学者友好”的项目。您最终可能会因更适合另一种语言的设计而导致火车失事。您可能仍然会从中学习,但完成后您将无法使用它。

于 2013-07-22T15:19:21.203 回答
0

您将花费大部分时间进行易于矢量化的浮点运算。你真的不应该为此使用java;它没有向量算术的工具,它的优化器没有(或者,也许没有?)尝试对代码本身进行向量化。现代 C++ 编译器会做得更好。

于 2013-07-22T17:53:08.367 回答