machine learning - neuronales - Biblioteca de red neuronal de código abierto
tensorflow (4)
Puedes usar el framework accord.net. http://accord-framework.net/
Contiene algoritmos de aprendizaje neuronal como Levenberg-Marquardt, Parallel Resilient Backpropagation, el algoritmo de inicialización Nguyen-Widrow, Deep Belief Networks y Restricted Boltzmann Machines, y muchos otros elementos relacionados con redes neuronales.
Estoy buscando una biblioteca de red neuronal de código abierto. Hasta ahora, he visto FANN, WEKA y OpenNN. ¿Son los otros a los que debería mirar? El criterio, por supuesto, es la documentación, ejemplos y facilidad de uso.
Netlab es una biblioteca de Matlab comúnmente utilizada. (fuente libre y abierta)
La caja de herramientas de Netlab está diseñada para proporcionar las herramientas centrales necesarias para la simulación de algoritmos de red neuronal teóricamente bien fundados y modelos relacionados para su uso en la enseñanza, la investigación y el desarrollo de aplicaciones. Es ampliamente utilizado en la Maestría en Investigación en Matemáticas de Sistemas Complejos.
La biblioteca de Netlab incluye implementaciones de software de una amplia gama de técnicas de análisis de datos, muchas de las cuales aún no están disponibles en paquetes de simulación de redes neuronales estándar. Netlab funciona con Matlab versión 5.0 y superior, pero solo necesita el núcleo Matlab (es decir, no se requieren otras cajas de herramientas). No es compatible con versiones anteriores de Matlab.
Última actualización: 2017/12/17 (Actualizaré esta respuesta de vez en cuando ...)
Implementaciones estándar de redes neuronales
- FANN es una implementación muy popular en C / C ++ y tiene enlaces para muchos otros lenguajes.
- Creo que WEKA no tiene una implementación muy buena para redes neuronales. Hay una mejor biblioteca para Java (y C #): Encog .
- En scikit-learn (Python) 0.18 (versión actual de desarrollo) habrá una implementación de redes neuronales feed-forward ( documentación API ).
- PyBrain (Python) contiene diferentes tipos de redes neuronales y métodos de entrenamiento.
- Y debo mencionar mi propio proyecto, que se llama OpenANN ( Documentation ). Está escrito en C ++ y tiene enlaces de Python.
Aprendizaje profundo
Debido a que existe una gran publicidad en torno a las redes neuronales ("aprendizaje profundo"), hay muchas bibliotecas de investigación disponibles que posiblemente no sean tan fáciles de configurar, integrar y usar. Por otro lado, proporcionan funcionalidad de vanguardia y alto rendimiento (con GPU, etc.). La mayoría de estas bibliotecas también tienen diferenciación automática. Puede especificar fácilmente nuevas arquitecturas, funciones de pérdida, etc. y no tiene que especificar la retropropagación manualmente.
- Keras es el mejor de esta categoría en mi opinión: utilizable, poderoso y activamente desarrollado. Puede usar Tensorflow , Theano y CNTK como un back-end.
- Tensorflow de Google (C ++ / Python)
- CNTK de Microsoft (entrenamiento en Python / evaluación en C ++ / C # / Java / Python)
- Caffe de Berkeley Vision and Learning Center en C ++ con enlaces de Python
- Caffe2 de Facebook en C ++ con enlaces de Python
- PyTorch de Facebook, en Python, se puede ampliar con C / C ++
- mxnet (C ++, Python, R, Scala, Julia, Matlab, Javascript)
- Lasagne basada en Theano (Python)
- Blocks basados en Theano (Python)
- Neon proporciona implementaciones muy eficientes (Python)
- Redes neuronales para Torch 7 (Lua, Torch 7 es un "entorno similar a Matlab", visión general de algoritmos de aprendizaje automático en Torch )
- Deeplearning4j (Java)
- Chainer (Python)
- MatConvNet (Matlab)
- PaddlePaddle , CUDA / C ++ con enlaces de Python
- NNabla en Cuda / C ++ 11 con enlaces de Python
here se puede encontrar una comparación de rendimiento para bibliotecas aceleradas por GPU (un poco desactualizado desafortunadamente). here puede encontrar una comparación de las GPU y las versiones de la biblioteca.
Inactivo:
- Theano (Python) y sus API de alto nivel:
- cuda-convnet2 en CUDA / C ++ con enlaces de Python
- Hebel (Python)
Si desea flexibilidad para definir configuraciones de red, como compartir parámetros o crear diferentes tipos de arquitecturas convolucionales, entonces debe consultar la familia de bibliotecas Torch: http://www.torch.ch/ .
Todavía no he revisado la documentación de Torch 7, pero la documentación para las otras versiones era bastante decente y el código es muy legible (en Lua y C ++).