¿Qué paquete de aprendizaje profundo es el mejor?

Recomendaría Deeplearning4j . Echale un vistazo:
Aprendizaje profundo distribuido de código abierto para la JVM

Deeplearning4j no es el primer proyecto de aprendizaje profundo de código abierto, pero se distingue de sus predecesores tanto en lenguaje de programación como en intención. DL4J es un marco de aprendizaje profundo distribuido basado en Java, enfocado en la industria, con soporte comercial y distribuido destinado a resolver problemas que involucran cantidades masivas de datos en un tiempo razonable. Se integra con Hadoop y Spark utilizando un número arbitrario de GPU, y tiene un número al que puede llamar si algo se rompe.

——

Te daré una comparación aquí:

Pylearn2 / Theano
La mayoría de los investigadores académicos en aprendizaje profundo confían en Pylearn2 y Theano, que están escritos en Python. Pylearn2 es una biblioteca de aprendizaje automático, mientras que Theano es una biblioteca que maneja matrices multidimensionales, como Numpy. Ambas son herramientas poderosas ampliamente utilizadas para fines de investigación y que sirven a una gran comunidad. Se adaptan bien a la exploración de datos y afirman explícitamente que están destinados a la investigación.

Pylearn2 es un marco normal (no distribuido) que incluye todo lo necesario para llevar a cabo experimentos con perceptrones multicapa, RBM, autoencoders de denoising apilados y redes convolucionales. Lo recomendamos precisamente para esos casos de uso. En contraste, Deeplearning4j pretende ser el equivalente de Scikit-learn en el espacio de aprendizaje profundo. Su objetivo es automatizar tantos mandos como sea posible de forma escalable en GPU o CPU paralelas, integrando según sea necesario con Hadoop y Spark.

Antorcha
Torch7 es un marco computacional escrito en Lua que admite algoritmos de aprendizaje automático. Alguna versión de la misma es utilizada por grandes compañías tecnológicas como Google y Facebook, que dedican equipos internos a personalizar sus plataformas de aprendizaje profundo. Lua es un lenguaje multi-paradigmático desarrollado en Brasil a principios de la década de 1990.

Torch7, aunque potente, no fue diseñado para ser ampliamente accesible a la comunidad académica basada en Python, ni a los ingenieros de software corporativos, cuya lengua franca es Java. Deeplearning4j fue escrito en Java para reflejar nuestro enfoque en la industria y la facilidad de uso. Creemos que la usabilidad es el parámetro limitante que inhibe las implementaciones de aprendizaje profundo más extendidas. Creemos que un marco de código abierto con soporte comercial es la solución adecuada para garantizar herramientas de trabajo y construir una comunidad.

Cafe
Caffe es una biblioteca de visión artificial bien conocida y ampliamente utilizada que portó la implementación de redes convolucionales rápidas de Matlab a C y C ++. No está destinado a otras aplicaciones de aprendizaje profundo como texto, sonido o datos de series de tiempo. Tanto Deeplearning4j como Caffe realizan una clasificación de imágenes con redes convolucionales, que representan el estado del arte. A diferencia de Caffe, Deeplearning4j ofrece soporte de GPU paralela para un número arbitrario de chips, así como muchas características, aparentemente triviales, que hacen que el aprendizaje profundo se ejecute sin problemas en múltiples grupos de GPU en paralelo.

——

Aquí hay algunas razones por las que recomiendo el Deeplearning4j:

Licencia
Distinguiendo otra distinción entre estos proyectos de código abierto: Theano, Torch y Caffe emplean una licencia BSD, que no aborda las patentes o disputas de patentes. Deeplearning4j y ND4J se distribuyen bajo una licencia Apache 2.0, que contiene tanto una concesión de patente como una cláusula de represalia por litigio. Es decir, cualquiera es libre de hacer y los trabajos derivados de patentes se basan en el código con licencia Apache 2.0, pero si demandan a otra persona por reclamos de patentes con respecto al código original (DL4J en este caso), pierden inmediatamente todos los reclamos de patentes. (En otras palabras, se le dan recursos para defenderse en un litigio y se le desalienta de atacar a otros). BSD no aborda el problema.

Velocidad
Se ha demostrado que los cálculos de álgebra lineal subyacente de Deeplearning4j, realizados con ND4J, se ejecutan al menos dos veces más rápido que Numpy en multiplicaciones matriciales muy grandes. Esa es una de las razones por las cuales hemos sido adoptados por equipos en el Laboratorio de Propulsión a Chorro de la NASA. Además, Deeplearning4j se ha optimizado para ejecutarse en varios chips, incluidos x86 y GPU con CUDA C.

Mientras que Torch7 y DL4J emplean paralelismo, el paralelismo de DL4J es automático . Es decir, automatizamos la configuración de nodos y conexiones de trabajo, lo que permite a los usuarios evitar las bibliotecas mientras crean una red paralela masiva en Spark, Hadoop o con Akka y AWS. Deeplearning4j es el más adecuado para resolver problemas específicos y hacerlo rápidamente.

Deeplearning4j usando Java
Muchas personas a menudo preguntan por qué Skymind eligió implementar un proyecto de aprendizaje profundo de código abierto en Java, cuando gran parte de la comunidad de aprendizaje profundo se centra en Python. Después de todo, Python tiene excelentes elementos sintácticos que le permiten agregar matrices juntas sin crear clases explícitas, como Java requiere que haga. Asimismo, Python tiene un extenso entorno de computación científica con extensiones nativas como Theano y Numpy.

Sin embargo, Java tiene varias ventajas. En primer lugar, como lenguaje es inherentemente más rápido que Python. Cualquier cosa escrita en Python por sí misma, sin tener en cuenta su dependencia de Cython, será más lenta. Es cierto que la mayoría de las operaciones computacionalmente costosas se escriben en C o C ++. (Cuando hablamos de operaciones, también consideramos cosas como cadenas y otras operaciones involucradas con procesos de aprendizaje automático de alto nivel). La mayoría de los proyectos de aprendizaje profundo que se escriben inicialmente en Python tendrán que reescribirse si se van a poner en producción. . No es así con Java.

En segundo lugar, la mayoría de las principales empresas del mundo utilizan Java o un sistema basado en Java. Sigue siendo el idioma más utilizado en el mundo. Es decir, muchos programadores que resuelven problemas del mundo real podrían beneficiarse del aprendizaje profundo, pero están separados de él por una barrera del idioma. Queremos hacer que el aprendizaje profundo sea más útil para una gran audiencia nueva que pueda usarlo de inmediato.

En tercer lugar, la falta de sólidas bibliotecas informáticas científicas de Java puede resolverse escribiéndolas, lo que hemos hecho con ND4J, que se ejecuta en GPU o GPU distribuidas, y puede interactuar a través de una API Java o Scala.
Finalmente, Java es un lenguaje de red seguro que funciona de manera inherente multiplataforma en servidores Linux, escritorios Windows y OSX, teléfonos Android y en los sensores de baja memoria de Internet de las Cosas a través de Java incorporado. Mientras que Torch y Pylearn2 optimizan a través de C ++, lo que presenta dificultades para aquellos que intentan optimizarlo y mantenerlo, Java es un lenguaje de “escribir una vez, ejecutar en cualquier lugar” adecuado para empresas que necesitan utilizar el aprendizaje profundo en muchas plataformas.

El ecosistema
La popularidad de Java solo se ve reforzada por su ecosistema. Hadoop está implementado en Java; Spark corre dentro del tiempo de ejecución de Hadoop’s Yarn; Las bibliotecas como Akka hicieron posible la construcción de sistemas distribuidos para Deeplearning4j. En resumen, Java cuenta con una infraestructura altamente probada para prácticamente cualquier aplicación, y las redes de aprendizaje profundo escritas en Java pueden vivir cerca de los datos, lo que facilita la vida de los programadores. Deeplearning4j se puede ejecutar y aprovisionar como una aplicación YARN.

Java también se puede usar de forma nativa desde otros lenguajes populares como Scala, Clojure, Python y Ruby. Al elegir Java, excluimos la menor cantidad posible de comunidades de programación importantes.

Si bien Java no es tan rápido como C o C ++, es mucho más rápido de lo que muchos creen, y hemos construido un sistema distribuido que puede acelerar con la adición de más nodos, ya sean GPU o CPU. Es decir, si quieres velocidad, simplemente arroja más cajas.

Finalmente, estamos construyendo las aplicaciones básicas de Numpy, incluido ND-Array, en Java para DL4J. Creemos que muchas de las deficiencias de Java pueden resolverse rápidamente, y muchas de sus ventajas continuarán por algún tiempo.

Usando Scala
El equipo de Skymind ha prestado especial atención a Scala en la construcción de Deeplearning4j y ND4J, porque creen que Scala tiene el potencial de convertirse en el lenguaje dominante en la ciencia de datos. Escribir bibliotecas de computación numérica, vectorización y aprendizaje profundo para la JVM con una API Scala mueve a la comunidad hacia ese objetivo.

——

Espero que ayude

Recomiendo la caja de herramientas acelerada de GPU Cortexsys para Matlab / Octave para aprender sobre el aprendizaje profundo y desarrollar sus propios algoritmos. Está diseñado con el investigador y el científico en mente.

Está disponible en: joncox123 / Cortexsys

Incluye una guía del usuario, muchos ejemplos y soporte para muchos tipos de red, incluido LSTM.

Opciones: SciKit Learn, TensorFlow, Theano, Keras, H20 y Caffe

Mi elección: Tensor Flow.

Siguiente mejor: Theano

Scikit Learn: no proporciona soporte para GPU, no hay red neuronal

Caffe: No muy flexible, capas de gráficos, grandes innecesarios, procesamiento de imágenes, verbosidad innecesaria, definir modelo con editor de texto.

Keras: API de alto nivel para construir aprendizaje profundo, diseño orientado a objetos, problema de rendimiento.

TensorFlow y Theono

Theono mejor para GPU única, soporte nativo de Windows,

GPU múltiple Tensor Flow, desarrollado por Google, distribuido, escalable.

Chainer parece bastante interesante: Chainer: un marco flexible de redes neuronales

Escrito en Python, la formación de estructura de modelo muy flexible e intuitiva, puede usar CUDA.

Tu pregunta es un poco general. Escuché que los paquetes estándar como Theano, Torch, Caffe, etc. son muy buenos. Por lo general, es más la pregunta de qué lenguaje de programación / scripting desea usar y para qué quiere usarlo.

He visto recomendaciones de un paquete reciente de aprendizaje profundo conocido como hycis / Mozi y es realmente fácil de usar en comparación con caffe o antorcha. ¿Cómo se compara con otros paquetes como caffe y torch7?

More Interesting

¿Cuál es la distribución condicional completa?

¿Cómo usa Apple el aprendizaje profundo?

¿Es posible construir algo así como una red neuronal recurrente simplemente ingresando los mismos datos a lo largo del tiempo (por ejemplo, si los datos son una aceleración, cada entrada es el acc a la vez T)?

¿Dónde puedo encontrar un código de Python para preprocesar el conjunto de datos?

¿Cuál es la forma correcta de crear consultas jerárquicas?

¿Qué significa la siguiente imagen de un gráfico en Theano?

¿Cuál sería un enfoque razonable para optimizar los ingresos publicitarios del sitio web utilizando datos de GA y aprendizaje automático?

¿Por qué una gran proporción de los nuevos estudiantes de CS optan por especializarse en áreas más nuevas como el aprendizaje automático, la informática social y la informática móvil en lugar de las más antiguas como los sistemas, la arquitectura y las redes?

¿Cómo sabemos de antemano qué características funcionarán mejor para la clasificación?

¿Cuál es la mejor manera de personalizar los artículos para un usuario en función de su historial de lectura?

¿Cuál es la diferencia entre 'Inferencia' y 'Estimación del modelo' en los documentos de LA?

¿Cuán ampliamente adoptado es el aprendizaje automático en el comercio?

¿Cuál es la diferencia entre un enrutador CNC y un molinillo CNC?

¿Cuál es la diferencia entre análisis de datos, ciencia de datos, big data y aprendizaje automático?

¿Cuáles son los principales desafíos en el aprendizaje semi-supervisado?