lms*_*asu 23 prototyping neural-network
根据您的经验,这是实施人工神经网络原型的最有效方法吗?关于R(免费,但我没有使用它)或Matlab(不是免费的),很多炒作,另一种可能的选择是使用像C++/Java/C#这样的语言.问题主要针对试图测试某些神经网络架构或学习算法的人.
如果您选择使用与上述三种编程语言不同的编程语言,您能告诉我他们的名字和一些有关您选择的解释(除了:这是我所知道的唯一/最常用的语言).
谢谢.
Mic*_*lon 27
由于神经网络被科学家大量使用,而不是程序员使用,因此选择一种针对科学家的编程语言,并为神经网络提供良好的库.
Python是一个合理的选择,因为它被科学家广泛使用.两个开始的发行版是
这些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库一样.
还有另一个名为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?)
如果你有空闲时间,我建议你
希望这可以帮助.
这取决于您当前的设置.当我以前在大学时代回来工作时,我不得不使用C++ + MPI +数字配方.这样做是因为我必须在大型beowulf集群上加载共享.
如果你的计算需求不大,那么任何东西都可以.预包装的库可用于所有平台(R,Python(numPy,scipy),C/C++(数字配方)等).如果您对其中任何一个编程感到满意,那应该不是什么大问题.
如果我现在必须对任何原型进行原型设计,我可能会使用Python(因为我发现它更容易进行原型设计)