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.
¿Cuál es el mejor marco de aprendizaje profundo, Theano, Torch7 o Caffe?
Related Content
¿Cuál es la diferencia entre skip, mirilla y conexiones residuales en redes neuronales?
¿Son los robots el futuro del cuidado de los ancianos?
Cómo usar vl_nnbnorm en mi propia implementación de una red neuronal
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
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.
- Aprendizaje automático en la nube: análisis predictivo
- 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?
¿Leer e interpretar los contenidos del cerebro humano es potencialmente un problema de NP?
¿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?
¿Qué pasaría si una IA fuerte estuviera disponible con una licencia de código abierto?