una tutorial redes programar principiantes paso para neuronales neuronal inteligencia implementacion hacer ejemplos como artificial erlang neural-network dataflow oz

erlang - tutorial - redes neuronales para principiantes



¿Cuál es el mejor lenguaje de programación para implementar redes neuronales? (10)

No estoy buscando una biblioteca de redes neuronales, ya que estoy creando nuevos tipos de redes. Para eso necesito un buen lenguaje de "flujo de datos".

Por supuesto que puedes hacer esto en C, C ++, Java y co. Pero lidiar desde cero con el multihilo, etc., sería una pesadilla.

En la otra extremidad, los idiomas como Oz o Erlang parecen más adaptados, pero no tienen muchas bibliotecas y son más difíciles de dominar (es fácil jugar con ellos, pero ¿está bien crear un software completo?).

Qué sugieres ?


¿Por qué reinventar la rueda? Prueba PyBrain . Es gratis y muy completo:



Erlang es muy adecuado para NN.

  1. Las neuronas pueden modelarse por procesos (no hay problema con tener millones de ellas)
  2. Las conexiones / sinapsis pueden representarse por PID de la neurona objetivo. Es muy fácil inicializar dicha red como parte del procedimiento de inicio estándar en OTP. La comunicación se realizaría por paso de mensajes.
  3. Tal vez sería bueno tener un espacio de direcciones global en ETS / mnesia (integrado en almacenes de datos) para realizar una reconfiguración dinámica de la estructura de la red.
  4. La coincidencia de patrones en el bloque de recepción puede determinar qué tipo de señal recibe la neurona y modificarla sobre la marcha.
  5. Sería muy fácil monitorear tal red.

También considere que Erlang NN sería ''en vivo'' todo el tiempo. Podrías consultar neuronas, capas, enrutadores, etc. en cualquier momento. En C / C ++, acaba de leer el estado actual de las matrices / estructura de datos.

En cuanto al rendimiento, todos sabemos que C / C ++ es órdenes de magnitud más rápido que Erlang, sin embargo, el tema NN es complicado.

Si la red contuviera muy pocas neuronas, en un espacio de direcciones muy amplio, en una matriz regular, iterar sobre ella una y otra vez podría ser costoso (en C). La situación equivalente en Erlang se resolvería mediante una sola consulta a las neuronas raíz / raíz (capa de entrada), que propagaría la consulta directamente a los vecinos bien dirigidos.


No es un lenguaje en sí mismo, pero Emergent es muy poderoso y puede ser altamente personalizado (tiene un lenguaje de scripting completo).

También es de código abierto, lo que podría ser útil como guía si necesita crear su propia versión para sus arquitecturas novedosas.



Si está interesado en la programación de flujo de datos y en subprocesos múltiples, sugeriría National Instruments LabVIEW. En este caso, no necesita preocuparse por los subprocesos múltiples ya que ya está allí y también puede usar OOP ya que ahora OOP también es nativo con LabVIEW. LabVIEW OOP también se basa puramente en el paradigma de programación de flujo de datos.


Si tiene alguna experiencia con Java, use Scala, que es un lenguaje JVM basado en el mismo concepto de "actores" que Erlang. Pero es menos estricto que Erlang y puede usar fácilmente cualquier biblioteca Java existente.

Luego, cuando encuentre una tarea computacionalmente costosa que funcionaría mejor en Erlang, puede usar la biblioteca de interfaces de Erlang para comunicarse entre su código Scala y sus nodos Erlang distribuidos.


Todo depende de su aplicación. C ++, Python son algunos buenos lenguajes de programación para el aprendizaje automático.


Utilizar Java no significa tratar desde cero con subprocesos múltiples, solo use una de las numerosas bibliotecas de Java Actor.