¿Cuál es el mejor marco de aprendizaje profundo, Theano, Torch7 o Caffe?

No hay nada como el mejor marco de Deep Learning. Los tres marcos son muy buenos y tienen diferentes ventajas.
Si se quiere codificar el algoritmo completo para un problema específico, Theano es el más rápido para comenzar. Da un control integral sobre la formación de la red neuronal. La razón por la que usamos Theano en ParallelDots es que las redes neuronales que hacemos no tenían implementaciones estándar y, por lo tanto, Theano era la mejor manera de crear prototipos.
Ahora, si esto es tan básico, es bueno para hacer algoritmos desde cero, pero ¿qué pasa con el uso de algoritmos estándar (que otras respuestas dicen que Theano es difícil de usar)? La respuesta es como Scipy para Numpy, PyLearn2 para Theano. Contiene implementaciones de muchos algoritmos para usar en una red neuronal. También hay muchas otras alternativas a PyLearn2 que pueden simplificar aún más algunas redes neuronales específicas.
La antorcha 7 tiene un nivel casi tan bajo como Theano, pero tiene más lógica (como backprop), optimizadores de optimización, etc., por lo que uno tiene que escribir un código menor si está usando un algoritmo estándar. Uno puede pensarlo como Theano + PyLearn2. Se usa en Lua, que no es tan difícil de aprender y tiene muchas implementaciones de código abierto (especialmente de Facebook AI). El único problema es la dificultad para encontrar materiales de aprendizaje.
Caffe es básicamente PyLearn2 (o incluso una abstracción más alta a veces), cuyo código básico (implementación de nivel Theano) está escrito en C ++ altamente optimizado para alta velocidad y conservación del espacio. Una muy buena opción si uno quiere usar algún algoritmo estándar. Pero cambiar el código C ++ es mucho más difícil que Python o Lua, por lo que ajustar las cosas sería difícil.

No comentaré sobre Torch7 ya que no he trabajado, pero para un novato, Caffe es mucho mejor.
El ingenio de Caffe radica en su simplicidad, en términos de definir la arquitectura.
Pero si desea realizar un trabajo más fundamental, como cambiar la función de pérdida o introducir alguna restricción de optimización, debe dirigirse a Theano. Te sugiero que uses Pylearn2.
El aprendizaje profundo es bueno para captar conceptos en Theano, pero me gustaría advertirle sobre las complejidades de Theano. Puede suceder que pierda 3 meses solo para comprender la gran cantidad de códigos, para cuando la investigación haya avanzado.

En resumen, diría, Learn Theano, para un futuro a largo plazo en Deep Learning, y Caffe, si no quieres entrometerte demasiado con sus fundamentos, sino usarlo como un juego de herramientas.

Deeplearning4j es el mejor marco de DL para JVM, y puede ser el mejor marco de aprendizaje profundo para Spark, porque usa Scala como el propio Spark, para integraciones y fue construido con la computación distribuida en mente. Deeplearning4j tiene varios módulos Scala.

Los marcos como Deeplearning4j usan Spark como una capa de acceso a datos para orquestar múltiples subprocesos de host, mientras confían en otras bibliotecas para realizar las operaciones de matriz grande. Bibliotecas como ND4S o matrices n-dimensionales para Scala:

deeplearning4j / nd4s

El proyecto DL4J también incluye un contenedor Scala inspirado en las API de Keras y Torch:

deeplearning4j / ScalNet

DL4J usa Spark para ETL rápido, no computación. Se integra con Spark y hace que se ejecute en múltiples GPU o CPU. Para tareas de procesamiento de imágenes no triviales, el rendimiento es igual a Caffe, con la ventaja adicional de que DL4J es una biblioteca de aprendizaje profundo de propósito general, construida de manera modular. Es decir, con DL4J, puede procesar series de tiempo, texto o sonido, así como imágenes. Aquí hay un par de enlaces sobre cómo DL4J hace que Spark funcione y cómo funciona con GPU distribuidas:

Deeplearning4j en Spark

http://deeplearning4j.org/gpu

DL4J es la única biblioteca de DL certificada en Spark (a través de CDH) que viene con soporte comercial. (Divulgación: soy colaborador del proyecto). También es la única biblioteca DL escrita para JVM. El resto está enfocado en Python.

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

Mi elección :

Tensor Flow.Next best: Theano

Scikit Learn: no proporciona soporte de GPU, no Neural NetworkCaffe: no muy flexible, capas de gráficos, grandes innecesarios, procesamiento de imágenes, verbosidad innecesaria, define el modelo con el editor de texto.

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

TensorFlow y Theono

Theono es mejor para GPU simple, soporte nativo de Windows, GPU múltiple Tensor Flow, desarrollado por Google, distribuido, escalable.

H20: no es muy rápido cuando se trata de cálculo numérico, soporte para múltiples idiomas

Lo que nosotros y la mayoría de las organizaciones maduras hacemos para el aprendizaje profundo es:
Para la creación de prototipos, vamos con Keras (el backend puede ser tensorflow o theano).
Y luego podemos elegir tensorflow o theano para la implementación personalizada.

Estoy en el aprendizaje profundo durante 4 años, incluido mi maestro (IISc), prefiero tensorflow sobre theano por razones obvias a partir de ahora. También para el futuro, tensflow al menos parece ser el que funciona bien con Spark, plataformas de Google Cloud.

  1. Aprendizaje automático en la nube: análisis predictivo
  2. Flujo de tensor distribuido en Spark: escalando la biblioteca de aprendizaje profundo de Google

Personalmente, he probado tanto la antorcha 7 como la theano, diría que ambas tienen sus ventajas y desventajas. Theano es muy fácil y rápido para reconstruir la propagación. Torch7 es más transparente. Si desea construir modelos de aprendizaje profundo, puede intentar

fchollet / keras (muy modular basado en theano pero tiene un marco como antorcha)
BVLC / caffe (en mi opinión, el diseño es demasiado complicado, adecuado para principiantes)
hycis / Mozi (Hasta ahora, el más fácil de usar, muy rápido, muy modular y más completo)

Puede dejar en claro lo que quiere desde el siguiente enlace. Consulte el enlace que le dará todos los detalles sobre los tres Frameworks que solicitó.
Aprendizaje profundo distribuido de código abierto para la JVM

More Interesting

¿Cuáles son los buenos sitios web y foros de inteligencia artificial?

¿En qué áreas los métodos del núcleo siguen siendo competitivos con el aprendizaje profundo?

¿Cuál es la diferencia entre el reconocimiento de patrones estadísticos, el aprendizaje automático y el aprendizaje profundo?

¿Leer e interpretar los contenidos del cerebro humano es potencialmente un problema de NP?

Estoy planeando obtener una maestría en CS con especialización en inteligencia artificial de buenas universidades de EE. UU. ¿Cómo escribo un SOP para eso?

¿Los avances actuales [y pronosticados en el futuro cercano] en inteligencia artificial causarán una interrupción importante en el empleo? Si es así, ¿cómo [como se especula] tratarán los gobiernos / la sociedad?

¿Cuándo reemplazarán los robots los trabajos?

¿Cómo puede ser utilizada la inteligencia artificial por el gobierno de la India?

¿Cuál es el futuro del aprendizaje profundo para la segmentación de imágenes médicas?

¿Cómo define el aprendizaje automático para un niño de seis años?

¿Qué es la optimización de enjambre de partículas?

¿Cuáles son las principales aplicaciones / juegos móviles de Android / iOS que utilizan ampliamente la inteligencia artificial?

¿Cómo se ingresa a un laboratorio / grupo de investigación de inteligencia artificial sin educación formal?

¿Cómo creo un robot andante?

¿Qué pasaría si una IA fuerte estuviera disponible con una licencia de código abierto?