¿Herramienta de código abierto para el aprendizaje / experimentación de IA en el hogar?


9

Me gustaría experimentar un poco con la evolución de la red neuronal (NEAT). Escribí algo de GA y código de red neuronal en C ++ en los años 90 solo para jugar, pero el enfoque de bricolaje demostró ser tan laborioso que eventualmente lo descarté.

Las cosas han cambiado mucho desde entonces, y hay muchas bibliotecas y herramientas de código abierto muy agradables para cualquier interés que pueda tener. Busqué en Google diferentes bibliotecas de código abierto (p. Ej., DEAP), pero podría usar un poco de ayuda para elegir una que sea adecuada ...

  • Pasé gran parte de mi tiempo escribiendo código para visualizar lo que estaba sucediendo (estado de la red neuronal, estado físico de la población) o los resultados finales (gráficos, etc.).

    Tal vez esto debería ser realizado por una biblioteca de código abierto separada, pero el soporte de visualización sería algo que me permitiría dedicar más tiempo al problema / solución y menos a los detalles de implementación.
  • Conozco C / C ++, Java, C #, Python, Javascript y algunos otros. Algo que sea una buena compensación entre un lenguaje de nivel superior y un buen rendimiento en hardware doméstico sería una buena opción.

¿Puede alguien con experiencia sugerir una buena biblioteca de código abierto o un conjunto de herramientas?


Esta pregunta pertenece a softwarerecs.stackexchange.com . Por cierto, para mí, su pregunta parece ser muy amplia y, por lo tanto, debería cerrarse de todos modos.
nbro

@nbro - Gracias, sospeché que había un lugar mejor para esto, pero no sabía sobre softwarerecs.
Scott Smith

¿Pueden los que votaron esta pregunta decirnos por qué?
quintumnia

Respuestas:


3

como está escrito en Javascript y (todavía) no ofrece soporte para GPU, es bastante lento. Sin embargo, es muy agradable jugar con arquitecturas de red flexibles. La única visualización que ofrece en este momento es un mapa de la arquitectura de red, pero los gráficos podrían implementarse fácilmente.

https://github.com/wagenaartje/neataptic


2

Bueno, si usted elige TensorfFlow de trabajar, se obtiene TensorBoard como parte del paquete. Eso podría ser algo cercano a lo que estás buscando.

Y con TensorFlow, puede codificar en C ++, Python y algunos otros lenguajes (creo que también hay enlaces de Ruby y Java, probablemente otros por ahora).



2

También hay DXNN, que es como usted describió, un sistema neuroevolutivo, está escrito en Erlang. https://github.com/CorticalComputer/DXNN2

Trabajé un poco para hacerlo modular, por lo que lo usa como biblioteca y mantiene aislado su código / aplicación.

Aquí hay un ejemplo de código , que descarga DXNN como una biblioteca. También genera archivos de datos listos para gnuplot para su visualización.


2

Fann ( http://leenissen.dk/fann/wp/ ) es una biblioteca gratuita de red neuronal de código abierto.

Características de la FANN:

  • Biblioteca de redes neuronales artificiales multicapa en C
  • Entrenamiento de propagación hacia atrás (RPROP, Quickprop, Batch, Incremental)
  • Entrenamiento de topología en evolución que construye y entrena dinámicamente el ANN (Cascade2)
  • Fácil de usar (crear, entrenar y ejecutar un ANN con solo tres llamadas a funciones)
  • Rápido (ejecución hasta 150 veces más rápido que otras bibliotecas)
  • Versátil (posible ajustar muchos parámetros y características sobre la marcha)
  • Bien documentado (un artículo de introducción fácil de leer, un manual de referencia exhaustivo y un informe universitario de más de 50 páginas que describe las consideraciones de implementación, etc.)
  • Multiplataforma (también se informa que el script de configuración para Linux y Unix, los archivos dll para Windows, los archivos de proyecto para MSVC ++ y los compiladores de Borland funcionan)
  • Se implementaron varias funciones de activación diferentes (incluidas funciones lineales paso a paso para ese bit adicional de velocidad)
  • Fácil de guardar y cargar ANN completos
  • Varios ejemplos fáciles de usar
  • Puede usar números de coma flotante y de punto fijo (en realidad, están disponibles tanto flotante, doble como int)
  • Caché optimizado (para ese bit extra de velocidad)
  • Código abierto, pero aún se puede usar en aplicaciones comerciales (con licencia LGPL)
  • Marco para un manejo sencillo de los conjuntos de datos de capacitación.
  • Interfaces gráficas
  • Enlaces de idiomas a una gran cantidad de lenguajes de programación diferentes
  • Ampliamente utilizado (aproximadamente 100 descargas por día)

2

Para algoritmos genéticos, he escrito GeneticSharp .

Una biblioteca de algoritmos genéticos multiplataforma para .NET Core y .NET Framework. La biblioteca tiene varias implementaciones de operadores de GA, como: selección, cruce, mutación, reinserción y terminación.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.