实现神经网络的最佳编程语言是什么?

时间:2011-07-01 10:39:12

标签: erlang neural-network dataflow oz

我不是在寻找神经网络库,因为我正在创建新的网络。为此我需要一个好的“数据流”语言。

当然你可以用C,C ++,Java和co做到这一点。但是从头开始处理多线程等将是一场噩梦。

另一方面,像Oz或Erlang这样的语言似乎更适应,但它们没有很多库,而且它们很难掌握(它们很容易使用它们,但创建完整的软件是否可以?)

你会建议什么?

10 个答案:

答案 0 :(得分:15)

我观看了一个关于将Erlang用于神经网络的有趣会议演示。您可能想要查看它:

From Telecom Networks to Neural Networks; Erlang, as the unintentional Neural Network Programming Language

我也知道所提出的系统将根据the authors tweet在任何一天开源。

答案 1 :(得分:10)

Erlang非常适合NN。

  1. 神经元可以通过过程建模(没有问题,有数百万个)
  2. 连接/突触可以由目标神经元的PID表示。作为OTP中标准init过程的一部分,很容易初始化这样的网络。通过消息传递可以实现通信。
  3. 为了对网络结构进行动态重新配置,在ETS / mnesia(内置数据存储区)中拥有全局地址空间可能会更好。
  4. 接收块中的模式匹配可以确定神经元接收哪种信号并在运行中对其进行修改。
  5. 监控这样的网络非常容易。
  6. 还要考虑到Erlang NN会一直“活着”。您可以随时查询神经元,图层,路由器等。 在C / C ++中,您只需读取数组/数据结构的当前状态。

    关于性能,我们都知道C / C ++比Erlang快几个数量级, 然而NN主题很棘手。

    如果网络在非常宽的地址空间中保持非常少的神经元,则在常规阵列中, 一次又一次地迭代它可能是昂贵的(在C中)。 Erlang的等效情况可以通过对根/根(输入层)神经元的单一查询来解决,这会将查询直接传播到寻址良好的邻居。

答案 2 :(得分:6)

DXNN1和DXNN2,它是在教科书中构建和介绍的:通过Erlang的神经进化手册:http://www.amazon.com/Handbook-Neuroevolution-Through-Erlang-Gene/dp/1461444624/ref=zg_bs_760204_22

是开源的,可从以下网址获取:https://github.com/CorticalComputer

答案 3 :(得分:3)

如果您对数据流编程和多线程感兴趣,那么我建议使用NI LabVIEW。在这种情况下,你不需要打扰多线程,因为它已经存在,你也可以使用OOP,因为现在OOP也是LabVIEW的原生。 LabVIEW OOP也完全基于数据流编程范例。

答案 4 :(得分:2)

如果您有任何Java经验,那么使用Scala,这是一种基于与Erlang相同的“actor”概念的JVM语言。但它不如Erlang严格,可以轻松使用任何现有的Java库。

然后,当您发现计算成本高昂的任务在Erlang中工作得更好时,您可以使用Erlang的jinterface库在Scala代码和分布式Erlang节点之间进行通信。

答案 5 :(得分:1)

使用Java并不意味着从头开始使用多线程 - 只需使用众多Java Actor库中的一个。

答案 6 :(得分:0)

为什么重新发明轮子?试试PyBrain。它是免费的,非常全面的:

答案 7 :(得分:0)

它本身并不是一种语言,但Emergent非常强大,可以高度自定义(它有完整的脚本语言)。

它也是开源的,如果您需要为新颖的架构制作自己的版本,这可能会有所帮助。

答案 8 :(得分:0)

Erlang的另一大优势是与Drakon完全集成

http://drakon-editor.sourceforge.net/drakon-erlang/intro.html

答案 9 :(得分:-1)

这完全取决于您的申请。 C ++,Python是一些很好的机器学习编程语言