我不是在寻找神经网络库,因为我正在创建新类型的网络。为此,我需要一种好的“数据流”语言。
当然,您可以在 C、C++、Java 和 co 中执行此操作。但是从头开始处理多线程等将是一场噩梦。
另一方面,像 Oz 或 Erlang 这样的语言似乎更适应,但它们没有很多库,而且更难掌握(玩起来很容易,但是创建完整的软件就可以了吗?)。
你有什么建议?
我不是在寻找神经网络库,因为我正在创建新类型的网络。为此,我需要一种好的“数据流”语言。
当然,您可以在 C、C++、Java 和 co 中执行此操作。但是从头开始处理多线程等将是一场噩梦。
另一方面,像 Oz 或 Erlang 这样的语言似乎更适应,但它们没有很多库,而且更难掌握(玩起来很容易,但是创建完整的软件就可以了吗?)。
你有什么建议?
我观看了一个关于将 Erlang 用于神经网络的有趣的会议演示。您可能想检查一下:
从电信网络到神经网络;Erlang,作为无意的神经网络编程语言
我还知道,根据作者的推文,所提出的系统现在任何一天都会开源。
Erlang 非常适合 NN。
还要考虑到 Erlang NN 将一直处于“活动状态”。您可以随时查询神经元、层、路由器等。在 C/C++ 中,您只需读取数组/数据结构的当前状态。
关于性能,我们都知道 C/C++ 比 Erlang 快几个数量级,但是 NN 主题很棘手。
如果网络在非常宽的地址空间中以规则数组保存很少的神经元,那么一次又一次地迭代它可能会很昂贵(在 C 中)。Erlang 中的等效情况将通过对根/根(输入层)神经元的单个查询来解决,这会将查询直接传播到寻址良好的邻居。
DXNN1,以及在教科书《Handbook of Neuroevolution Through Erlang》中构建和介绍的DXNN2:http ://www.amazon.com/Handbook-Neuroevolution-Through-Erlang-Gene/dp/1461444624/ref=zg_bs_760204_22
如果您对数据流编程和多线程感兴趣,那么我建议您使用 National Instruments LabVIEW。在这种情况下,您无需担心多线程,因为它已经存在,并且您也可以使用 OOP,因为现在 OOP 也是 LabVIEW 的本机。LabVIEW OOP 也纯粹基于数据流编程范式。
如果您有任何 Java 经验,请使用 Scala,它是一种 JVM 语言,它基于与 Erlang 相同的“参与者”概念。但它没有 Erlang 严格,可以轻松使用任何现有的 Java 库。
然后,当您发现在 Erlang 中工作得更好的计算量大的任务时,您可以使用 Erlang 的 jinterface 库在您的 Scala 代码和分布式 Erlang 节点之间进行通信。
使用 Java 并不意味着从头开始处理多线程 - 只需使用众多 Java Actor 库之一。
它本身不是一种语言,但Emergent非常强大并且可以高度定制(它具有完整的脚本语言)。
它也是开源的,如果您需要为您的新颖架构制作自己的版本,它可以作为指南提供帮助。
Erlang 的另一大优势是与 Drakon 的完全集成
http://drakon-editor.sourceforge.net/drakon-erlang/intro.html
这完全取决于您的应用程序。C++、Python 是一些很好的机器学习编程语言