Estoy usando redes neuronales para resolver diferentes problemas de aprendizaje automático. Estoy usando Python y pybrain pero esta biblioteca está casi descontinuada. ¿Hay otras buenas alternativas en Python?
machine-learning
python
neural-network
marcodena
fuente
fuente
Respuestas:
ACTUALIZACIÓN: el panorama ha cambiado bastante desde que respondí esta pregunta en julio del '14, y algunos nuevos jugadores han entrado en el espacio. En particular, recomendaría revisar:
Cada uno tiene sus fortalezas y debilidades, así que pruébelos y vea cuál se adapta mejor a su caso de uso. Aunque hubiera recomendado usar PyLearn2 hace un año, la comunidad ya no está activa, por lo que recomendaría buscar en otro lado. Mi respuesta original a la respuesta se incluye a continuación, pero es en gran medida irrelevante en este punto.
PyLearn2 generalmente se considera la biblioteca de elección para redes neuronales y aprendizaje profundo en python. Está diseñado para facilitar la experimentación científica en lugar de la facilidad de uso, por lo que la curva de aprendizaje es bastante empinada, pero si te tomas tu tiempo y sigues los tutoriales, creo que estarás contento con la funcionalidad que proporciona. Se proporciona todo, desde perceptrones multicapa estándar hasta máquinas Boltzmann restringidas, redes convolucionales y codificadores automáticos. Hay una gran compatibilidad con GPU y todo está construido sobre Theano, por lo que el rendimiento suele ser bastante bueno. La fuente de PyLearn2 está disponible en github .
Tenga en cuenta que PyLearn2 tiene el problema opuesto de PyBrain en este momento: en lugar de ser abandonado, PyLearn2 está en desarrollo activo y está sujeto a cambios frecuentes.
fuente
Tensor Flow ( docs ) de Google es otro marco agradable que tiene diferenciación automática. He escrito algunas ideas rápidas sobre Google Tensor Flow en mi blog, junto con el ejemplo MNIST que tienen en su tutorial.
Ver también: Mi tutorial de Tensorflow XOR
Lasagne ( docs ) es muy agradable, ya que usa theano (→ puedes usar la GPU) y hace que sea más fácil de usar. El autor de lasaña ganó el desafío Kaggle Galaxy, que yo sepa. Es agradable con nolearn . Aquí hay una red de ejemplo MNIST:
Caffe es una biblioteca de C ++, pero tiene enlaces de Python. Puede hacer la mayoría de las cosas mediante archivos de configuración (prototxt). Tiene muchas opciones y también puede hacer uso de la GPU.
fuente
Pylearn confía en Theano y, como se mencionó en la otra respuesta, usar la biblioteca es bastante complicado, hasta que lo consigues.
Mientras tanto, sugeriría usar Theanets . También se construyó sobre Theano, pero es mucho más fácil trabajar con él. Puede ser cierto que no tiene todas las características de Pylearn, pero para el trabajo básico es suficiente.
También es de código abierto, por lo que puede agregar redes personalizadas sobre la marcha, si se atreve. :)
EDITAR: diciembre de 2015. Recientemente comencé a usar Keras . Es un poco más bajo que Theanets, pero mucho más poderoso. Para pruebas básicas, Theanets es apropiado. Pero si quieres investigar un poco en el campo de ANN Keras es mucho más flexible. Además, los Keras pueden usar Tensorflow como backend.
fuente
TensorFlow (de Google, lanzado el 09/11/2015) parece prometedor.
FYI:
fuente
Pylearn2 parece ser la biblioteca de elección, sin embargo, encuentro sus archivos de configuración de YAML desagradables.
Python en sí fue diseñado para ser un lenguaje fácil para la creación de prototipos, ¿por qué no lo usarías para definir las propiedades de la red? Tenemos excelentes editores con autocompletado que le facilitarían la vida y Python no es como C ++, donde debe esperar a que finalicen las compilaciones largas antes de poder ejecutar su código.
Los archivos YAML, por otro lado, debe editarlos con un editor de texto estándar sin asistencia alguna y esto hace que la curva de aprendizaje sea aún más pronunciada.
Puede que me esté perdiendo el panorama general, pero todavía no entiendo qué estaban pensando, no creo que la creación de prototipos en el código sea mucho más lenta. Por esa razón, estoy considerando Theanets o usando Theano directamente.
fuente
Me gustan los bloques , que también están construidos sobre Theano. Mucho más accesible que PyLearn2, y más funciones ricas que Lasagne. Bien escrito, también.
Actualizado en enero de 2016:
Al momento de escribir, Keras tiene, con mucho, el mayor impulso. Es altamente modular y puede ejecutarse tanto en Theano como en Tensorflow, lo que le brinda grandes oportunidades.
fuente
MXNet :
fuente
Por lo que escuché, Pylearn2 podría ser actualmente la biblioteca de elección para la mayoría de las personas. Esto me recuerda una reciente publicación de blog hace unos meses que enumera todas las diferentes bibliotecas de aprendizaje automático con una breve explicación.
https://www.cbinsights.com/blog/python-tools-machine-learning
La sección que podría interesarle aquí sería "Aprendizaje profundo". Sobre Pylearn2, escribe
fuente
Escribí esta publicación detallando algunos de mis favoritos personales:
Las mejores bibliotecas de aprendizaje automático en Python
Como se mencionan más de 30 bibliotecas diferentes, no las publicaré todas aquí, pero estas se encuentran entre las más populares:
(Lo siento, no puedo vincular a los repositorios de Github ya que mi representante todavía es <10 ...)Editar: se agregaron enlaces a repositorios de Github.
fuente
neón :
fuente
Solo para agregar algunos recursos más. Recientemente hubo un artículo que estudiaba las diferencias entre varios paquetes de redes neuronales y redes neuronales profundas.
Aquí puedes encontrar la información . Parece que Torch y TensorFlow son los ganadores.
Nota: no todos están en python. Sin embargo, lo publiqué para abrir la discusión.
fuente
Microsoft Cognition Toolkit (anteriormente conocido como CNTK) tiene una API de Python . Entre otras cosas, se supone que es bueno para múltiples GPU :
Se pueden encontrar ejemplos y tutoriales en https://github.com/Microsoft/CNTK/tree/master/bindings/python
fuente
DyNet: el kit de herramientas de red neuronal dinámica. De 1}:
Anteriormente se conocía como cnn (cuyo enlace a Python se llamaba pycnn).
Referencias
fuente
Te recomiendo que uses tensorflow, que está en desarrollo y es compatible con el aprendizaje profundo. Puede usar las Keras API de redes neuronales de alto nivel que se ejecutan sobre tensorflow y es muy simple de usar, solo pruebe un tutorial y le encantará.
fuente
PyTorch
Está ganando mucho apoyo debido a su facilidad de uso y similitud con Python básico.
Se ejecuta "línea por línea" (a través de gráficos dinámicos), al igual que Python normal y se puede depurar fácilmente, incluso utilizando declaraciones de impresión estándar. También se integra muy bien con NumPy y otras bibliotecas de Python conocidas, como Scikit Learn.
Debido a que facilita el modelado, es ideal para crear prototipos y explorar nuevas ideas en general.
Es compatible con múltiples GPU y lo hace de una manera realmente fácil.
Mira más características aquí .
Aunque muchos de los beneficios anteriores hacen que PyTorch sea mucho más agradable de usar que otras bibliotecas de uso común, vale la pena mencionar que la próxima versión principal de Tensorflow, por defecto, también usará la creación de gráficos dinámicos (también conocido como modo ansioso ). Esto lo hará comparable a PyTorch en uso.
fuente
Si está interesado en las comparaciones de rendimiento, Soumith Chintala mantiene un conjunto de puntos de referencia de convnet que cubren varios de los marcos de python ya mencionados ( TensorFlow , chainer , neon , Theano ):
fuente
NeuPy es una biblioteca de Python para redes neuronales artificiales. NeuPy admite muchos tipos diferentes de redes neuronales, desde un perceptrón simple hasta modelos de aprendizaje profundo.
fuente