2013-07-22 49 views
0

我想通過編寫一個程序來探索神經網絡,以使用不同類型的網絡。到目前爲止,我已經用C++編寫了一個基本的感知器。據我瞭解,神經網絡可能需要大量的計算能力來完成相當小的任務,所以優化是一個問題,或者至少我想認真對待這個想法,而不會像gpu編程那樣極端。編碼速度,編程速度折衷:C++或Java與本機代碼

我很喜歡使用Java進行編程,而使用C++的編程則更少,但是想要獲得更多的體驗。

我的問題:

鑑於我可以用Java編寫更快的主程序,但我擔心速度問題。在Java中編寫主程序並在C++中編寫更密集的部分或改爲使用C++編寫整個程序更有意義?

我沒有任何用戶界面要求比其他語言更喜歡一種語言(即我不打算將它粘貼到Web應用程序中)。

**沒有其他人會使用它,因爲已經有更多的專業開源版本可用(FANN/Encog)。這純粹是爲了我的娛樂/學習。我想了解更多的C++,所以我想至少寫一些如果它(儘管如果有人認爲它完全寫在Java中更有意義,我會有興趣知道爲什麼。)

+0

我不擔心編寫代碼的速度。你可以先用Java編寫它,然後將其轉換爲C++。你一定會想辦法簡化它。 –

回答

1

這是一個相當主觀的問題,並不適合所以但我會給它一個鏡頭。

根據您的實施情況,您可能發現自己受帶寬和延遲等因素的限制。如果我是你,我會盡可能用你熟悉的語言編寫它,分析它,然後回頭用更快的速度重寫慢速部分,並考慮優化。

這是優化程序,我會遵循項目預計將CPU一般。因爲你正在這樣做,以更好地掌握C++,它可能有益於你使用C++而不是Java的整個事情,並在以後優化部分,但神經網絡可能不是一個「初學者友好」的,項目。這可能會導致由於更適合於另一種語言的設計而導致的火車殘骸。您仍可能從中學習,但完成後無法使用它。

+0

謝謝,我想我會用直接的C++來爲這一個,一旦我不再有強大的學習動機,我會考慮Java/C++。 – user1854496

0

您將花大部分時間做簡單矢量化的浮點運算。你真的不應該爲此使用Java;它沒有用於矢量算術的設施,其優化程序也沒有(或者也許沒有?)嘗試引導代碼本身。現代C++編譯器會做得更好。