首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >神经网络原型设计

神经网络原型设计
EN

Stack Overflow用户
提问于 2009-12-04 20:16:43
回答 18查看 5.9K关注 0票数 23

根据您的经验,实现人工神经网络原型的最有效方法是什么?关于R (免费,但我没有用过它)或Matlab (非免费)有很多炒作,另一个可能的选择是使用像C++/Java/C#这样的语言。这个问题主要针对那些试图测试一些神经网络架构或学习算法的人。

如果你选择使用与上述三种语言不同的编程语言,你能告诉我它们的名称和关于你的选择的一些解释吗(例外:这是我所知道的唯一/最常用的语言)。

谢谢。

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 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库一样。

https://rpy2.github.io/

还有一个名为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/

票数 27
EN

Stack Overflow用户

发布于 2009-12-09 17:08:25

我尝试使用高级抽象语言(matlab、java)和低级语言(C)。都使用工具箱和库,并自己编写代码。总体反应是什么?两者都不是完美的工具。请记住:

  • 一个原型可能还不够:通常你需要在大样本上运行网络,或者在一个样本子集上运行多次(在进化神经网络的情况下)才能获得令人满意的结果。如果你必须运行一个网络一百万次,即使是一个很小的性能提升也可能是一个巨大的帮助和时间节省(例如,C超过matlab);
  • 如果,另一方面,你需要简化编码,你可能想要使用许多预打包的库(javaNN等)中的一个;
  • 你使用的是哪种神经网络?连续时间递归神经网络?Backprop?你是怎么训练他们的?你如何验证他们的结果?准确性重要吗?(例如,您是否在小型设备上运行它们,例如内存有限的机器人控制板,如Arduinos?)

如果你有空闲时间,我建议

  1. 使用更高级的语言学习概念,甚至可以先使用伪代码;
  2. 一旦您熟悉了所有的复杂性,特别是在使用不断发展的神经网络时,选择一种他们已经熟悉的语言
  3. ,然后您可能想要开始研究如何针对速度、内存占用等进行优化。

希望这能有所帮助。

票数 9
EN

Stack Overflow用户

发布于 2009-12-06 21:48:20

我在某种程度上使用过Matlab的神经网络工具箱,并喜欢它作为原型工具,因为它的图形界面允许您设置网络,实验训练与测试输入数据的大小,以及它的训练后测试所有内置的。它看起来很好很自然的开始了……

我还尝试了Joone (Java Object Oriented Neural Engine)。它设置得非常好,当时我还是一个业余爱好者,通过测试,我仍然可以毫无问题地启动和运行各种网络。它是Java,所以在训练大型复杂系统时,它可能没有您想要的性能,但它的API非常容易接近。

我还看到在C++中使用Flood完成了一些工作。它有一系列与网络建立的类,这些类适合解决一系列问题。这值得一看。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1846592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档