根据您的经验,这是实施人工神经网络原型的最有效方法吗?关于R(免费,但我没有使用它)或Matlab(不是免费的),很多炒作,另一种可能的选择是使用像C++/Java/C#这样的语言.问题主要针对试图测试某些神经网络架构或学习算法的人.
如果您选择使用与上述三种编程语言不同的编程语言,您能告诉我他们的名字和一些有关您选择的解释(除了:这是我所知道的唯一/最常用的语言).
谢谢.
由于神经网络被科学家大量使用,而不是程序员使用,因此选择一种针对科学家的编程语言,并为神经网络提供良好的库.
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的生产力提高了10倍.
您提到R,可能是因为它具有您需要使用的统计功能,或者您可能有可以编写R代码的人员.同样,选择Python与R不是一个或两个决定.你可以使用两者.
RPY库允许Python程序访问R库和代码.使用它你可以用Python编写主程序,并将R视为提供库的工具,就像使用用C编写的FANN库一样.
http://rpy.sourceforge.net/
还有另一个名为RSPython的模块,它可以兼顾两种方式,因此R程序可以访问用Python编写的库.如果您有专业的R程序员帮助您,这将非常有用.
http://www.omegahat.org/RSPython/
而这还不是全部.您可以利用Python来简化Java编程.如果您有Java神经网络引擎,您仍然可以使用在Java VM上运行的Jython版本在Python中编写大部分程序,并允许您在代码中使用任何Java库和类.您仍然可以使用快速FANN库,因为它们为Java程序提供绑定.
我为你的工作推荐Python的主要原因是它被很多科学家使用,这就是为什么有两种科学导向的分布可用.第二个原因是Python非常容易让新手程序员开始使用,并且在探索神经网络时,您可能会从更简单的模拟开始,并通过更多的数据操作和结果分析来处理更复杂的模拟.Python将允许您构建自己的代码库,并成为专业的Python程序员,以便您可以将更多的注意力集中在神经网络问题上.如果你用一点Java,一点C++和一点R来反弹,那么你将能够在神经网络上花费更少的时间.对于那些想要从事编程工作的人来说,这种策略可能会有所帮助,但对于那些希望通过神经网络获得一些重要成果的人来说则不行.
即使您的神经网络工作扩展到专门的硬件,即所谓的神经形态芯片,您仍然可以利用Python,因为NIH的这篇论文演示了:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2701676/
我尝试使用高抽象级语言(matlab,java)和低级语言(C).两者都使用工具箱和库,并自己编码.整体反应?两者都不是完美的工具.请记住:
原型可能还不够:通常你需要在大样本上运行网络,或者在一个样本子集上运行几次(在不断发展的神经网络的情况下)以获得不错的结果.如果你必须运行一百万次网络,即使很小的性能提升也可能是一个巨大的帮助和节省时间(即C over matlab);
另一方面,如果您需要易于编码,则可能需要使用众多预打包库中的一个(javaNN等);
你使用什么样的神经网络?连续时间重复神经网络(CTRNN)?Backprop?你是如何训练他们的?你如何验证他们的结果?准确性很重要吗?(即你是在小型设备上运行它们,例如内存有限的机器人控制板,如Arduinos?)
如果你有空闲时间,我建议你
使用更高级别的语言学习概念,甚至首先使用伪代码;
一旦熟悉了所有错综复杂的内容,特别是如果使用不断发展的神经网络,请选择他们熟悉的语言
那么你可能想开始研究如何优化速度,内存占用等.
希望这可以帮助.
我在某种程度上使用了Matlab的神经网络工具箱,并将其作为原型工具享受,因为它的图形界面允许您设置网络,试验大小的训练与测试输入数据,以及它的训练后测试所有内置.开始使用它似乎很自然
我还尝试了Joone(Java面向对象的神经引擎).它设置得非常好,当时我有点像业余爱好者,并且通过测试仍可以使各种网络正常运行.它是Java,因此如果您正在训练大型复杂系统,它可能没有您可能想要的性能,但它的API非常平易近人.
我还看到在C++中使用Flood做了一些工作.它有一堆用适合解决一系列问题的网络设置的类.值得一试.
我也强烈推荐python.对于原型,python是一个很好的选择:编程更容易,更快,有大量的库可用,并且它在科学界广泛使用.
此外,如果您正在使用python,您还可以利用优秀的PyBrain包,其中包含用于神经网络,强化学习,无监督学习和其他机器学习任务的算法,这些应该可以帮助您快速构建原型.
这取决于您当前的设置.当我以前在大学时代回来工作时,我不得不使用C++ + MPI +数字配方.这样做是因为我必须在大型beowulf集群上加载共享.
如果你的计算需求不大,那么任何东西都可以.预包装的库可用于所有平台(R,Python(numPy,scipy),C/C++(数字配方)等).如果您对其中任何一个编程感到满意,那应该不是什么大问题.
如果我现在必须对任何原型进行原型设计,我可能会使用Python(因为我发现它更容易进行原型设计)