19

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

当然,您可以在 C、C++、Java 和 co 中执行此操作。但是从头开始处理多线程等将是一场噩梦。

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

你有什么建议?

4

10 回答 10

15

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

从电信网络到神经网络;Erlang,作为无意的神经网络编程语言

我还知道,根据作者的推文,所提出的系统现在任何一天都会开源。

于 2011-07-01T14:46:50.230 回答
10

Erlang 非常适合 NN。

  1. 神经元可以通过进程建模(拥有数百万个进程没有问题)
  2. 连接/突触可以由目标神经元的 PID 表示。作为 OTP 中标准初始化程序的一部分,初始化这样的网络非常容易。通信将通过消息传递来实现。
  3. 也许在 ETS/mnesia 中拥有全局地址空间(内置数据存储)以对网络结构进行动态重新配置会很好。
  4. 接收块中的模式匹配可以确定神经元接收到什么样的信号,并在运行中对其进行修改。
  5. 监控这样的网络将非常容易。

还要考虑到 Erlang NN 将一直处于“活动状态”。您可以随时查询神经元、层、路由器等。在 C/C++ 中,您只需读取数组/数据结构的当前状态。

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

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

于 2011-07-03T00:12:23.923 回答
6

DXNN1,以及在教科书《Handbook of Neuroevolution Through Erlang》中构建和介绍的DXNN2:http ://www.amazon.com/Handbook-Neuroevolution-Through-Erlang-Gene/dp/1461444624/ref=zg_bs_760204_22

是开源的,可在:https ://github.com/CorticalComputer

于 2013-06-29T18:57:30.690 回答
3

如果您对数据流编程和多线程感兴趣,那么我建议您使用 National Instruments LabVIEW。在这种情况下,您无需担心多线程,因为它已经存在,并且您也可以使用 OOP,因为现在 OOP 也是 LabVIEW 的本机。LabVIEW OOP 也纯粹基于数据流编程范式。

于 2012-12-17T10:07:34.647 回答
2

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

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

于 2011-07-07T05:07:34.357 回答
1

使用 Java 并不意味着从头开始处理多线程 - 只需使用众多 Java Actor 库之一。

于 2011-12-27T03:28:54.130 回答
0

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

于 2011-07-01T10:52:27.520 回答
0

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

它也是开源的,如果您需要为您的新颖架构制作自己的版本,它可以作为指南提供帮助。

于 2011-07-01T10:55:13.613 回答
0

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

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

于 2015-08-08T23:41:44.473 回答
-1

这完全取决于您的应用程序。C++、Python 是一些很好的机器学习编程语言

于 2017-07-06T08:22:35.630 回答