根据您的经验,实现人工神经网络原型的最有效方法是什么?关于R (免费,但我没有用过它)或Matlab (非免费)有很多炒作,另一个可能的选择是使用像C++/Java/C#这样的语言。这个问题主要针对那些试图测试一些神经网络架构或学习算法的人。
如果你选择使用与上述三种语言不同的编程语言,你能告诉我它们的名称和关于你的选择的一些解释吗(例外:这是我所知道的唯一/最常用的语言)。
谢谢。
发布于 2009-12-10 06:28:07
由于科学家经常使用神经网络,而程序员使用的较少,因此选择一种面向科学家并为神经网络提供良好库的编程语言。
Python是一个合理的选择,因为它被科学家广泛使用。首先,有两个发行版
http://www.pythonxy.com/
http://code.enthought.com/
这些Python发行版包含许多附加模块,这些模块不在标准Python库中,但对于科学家所从事的编程类型非常有用。搜索Python包索引会出现一些神经网络包,如果您刚刚学习神经网络,这些包可能是可以的。
http://pypi.python.org/pypi?:action=search&term=neural&submit=search
但是,如果您正在使用神经网络进行严肃的工作,您将需要一些类似于快速神经网络库的东西。这是随Python绑定一起提供的,因此您可以使用Python进行编程,使用各种Python模块进行绘图、可视化、数据操作等。但是,您的神经网络将使用FANN库中的优化编译代码运行。两全其美。
换句话说,为了运行实际的神经网络代码,您需要C,而不是Java。由于C库不能很好地与Java集成,因此请选择一种能够与C库顺利集成语言。Python可以做到这一点,而且比Java效率更高,因为解释算法所需的代码行要少得多。有些人发现,与Java相比,Java的生产率提高了10倍。
您提到了R,可能是因为它具有您需要使用的统计函数,或者您可以使用可以编写R代码的人员。同样,选择Python还是R不是非此即彼的决定。您可以同时使用这两种方法。
RPY库允许Python程序访问R库和代码。使用这种方法,您可以用Python编写主程序,并将R视为提供库的工具,就像使用用C编写的FANN库一样。
还有一个名为RSPython的模块可以双向工作,这样R程序就可以访问用Python语言编写的库。如果你有一个专业的R程序员帮助你,这将是很有用的。
http://www.omegahat.org/RSPython/
这还不是全部。您可以利用Python来简化Java编程。如果您有一个Java神经网络引擎,您仍然可以使用Jython版本在Python中编写大部分程序,该版本在Java VM上运行,并允许您在代码中使用任何Java库和类。而且您仍然可以使用fast FANN库,因为它们为Java程序提供了绑定。
我推荐Python用于您的工作的主要原因是,它被大量的科学家使用,这就是为什么有两个面向科学的发行版可用。第二个原因是Python对于新手程序员来说非常容易入门,在探索神经网络时,您可能会从更简单的模拟开始,然后通过更多的数据操作和结果分析来完成更复杂的模拟。Python将允许您构建自己的代码库,并成为Python程序员的专家,这样您就可以将更多的注意力集中在神经网络问题上。如果你有一点Java,一点C++和一点R,你就能在神经网络上花费更少的时间。这种策略可能对那些想要从事编程职业的人来说是好的,但对于那些想要用神经网络取得一些重要结果的人来说就不好了。
即使你的神经网络工作扩展到专门的硬件,也就是所谓的神经形态芯片,你仍然可以利用Python,正如NIH的这篇论文所展示的那样:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2701676/
发布于 2009-12-09 17:08:25
我尝试使用高级抽象语言(matlab、java)和低级语言(C)。都使用工具箱和库,并自己编写代码。总体反应是什么?两者都不是完美的工具。请记住:
如果你有空闲时间,我建议
希望这能有所帮助。
发布于 2009-12-06 21:48:20
我在某种程度上使用过Matlab的神经网络工具箱,并喜欢它作为原型工具,因为它的图形界面允许您设置网络,实验训练与测试输入数据的大小,以及它的训练后测试所有内置的。它看起来很好很自然的开始了……
我还尝试了Joone (Java Object Oriented Neural Engine)。它设置得非常好,当时我还是一个业余爱好者,通过测试,我仍然可以毫无问题地启动和运行各种网络。它是Java,所以在训练大型复杂系统时,它可能没有您想要的性能,但它的API非常容易接近。
我还看到在C++中使用Flood完成了一些工作。它有一系列与网络建立的类,这些类适合解决一系列问题。这值得一看。
https://stackoverflow.com/questions/1846592
复制相似问题