Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best programming language to implement neural networks?

I'm not looking for a Neural Networks library, since I'm creating new kinds of networks. For that I need a good "dataflow" language.

Of course you can do this in C, C++, Java and co. but dealing from scratch with the multithreading etc. would be a nightmare.

At the other extremity, languages like Oz or Erlang seem more adapted, but they don't have many libraries, and they are harder to master (it's easy to play with them, but is it OK to create complete software ?).

What would you suggest ?

like image 944
Blacksad Avatar asked Jul 01 '11 10:07

Blacksad


People also ask

Is Python good for neural network?

If you're just starting out in the artificial intelligence (AI) world, then Python is a great language to learn since most of the tools are built using it. Deep learning is a technique used to make predictions using data, and it heavily relies on neural networks.

Is Java good for neural networks?

Java is considered as one of the best languages for AI projects. If we examine artificial intelligence programming, we find, machine learning solutions, neural networks, search algorithms and multi-robot systems use Java.

Which language is best for AI ML?

1. Java for AI and machine learning. Java is a popular general-purpose and high-level computer programming language. It's a fast, secure, and transparent language that is supported by different frameworks and libraries.


2 Answers

I watched an interesting conference presentation about using Erlang for Neural Networks. You might want to check it out:

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

I also know that the presented system is going to be open-sourced any day now according the authors tweet.

like image 127
alavrik Avatar answered Sep 26 '22 06:09

alavrik


Erlang is very well suited for NN.

  1. Neurons can be modeled by processes (no problem with having millions of them)
  2. Connections/synapses can be represented by PIDs of target neuron. It is very easy to initialize such a network as part of standard init procedure in OTP. Communication would be realized by message passing.
  3. Maybe it would be good to have global address space in ETS/mnesia (build in datastores) in order to do dynamic reconfiguration of network structure.
  4. Pattern matching in receive block can determine what kind of signal neuron receives and modify it on the fly.
  5. It would be very easy to monitor such a network.

Also consider that Erlang NN would be 'live' all the time. You would be able to query neurons, layers, routers etc any time. In C/C++ you just read current state of arrays/data structure.

Regarding performance, we all know that C/C++ is orders of magnitude faster than Erlang, however NN topic is tricky.

If the network would hold very few neurons, in very wide address space, in regular array, iterating over it again and again could be costly (in C). Equivalent situation in Erlang would be solved by single query to root/roots (input layer) neurons, which would propagate query directly to well addressed neighborhs.

like image 42
user425720 Avatar answered Sep 26 '22 06:09

user425720