我不是在寻找神经网络库,因为我正在创建新的网络。为此我需要一个好的“数据流”语言。
当然你可以用C,C ++,Java和co做到这一点。但是从头开始处理多线程等将是一场噩梦。
另一方面,像Oz或Erlang这样的语言似乎更适应,但它们没有很多库,而且它们很难掌握(它们很容易使用它们,但创建完整的软件是否可以?)
你会建议什么?
答案 0 :(得分:15)
我观看了一个关于将Erlang用于神经网络的有趣会议演示。您可能想要查看它:
我也知道所提出的系统将根据the authors tweet在任何一天开源。
答案 1 :(得分:10)
Erlang非常适合NN。
还要考虑到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是一些很好的机器学习编程语言