¿Estoy siendo demasiado ambicioso si trato de aprender y ser bueno en Caffe, Theano y Torch al mismo tiempo? ¿O debería centrarme en uno solo?

Una forma de pensar es qué líneas de investigación existentes está siguiendo personalmente. Una ventaja de caffe es que muchos de los avances recientes tienen algún tipo de implementación en caffe (segmentación semántica, cnn completo, r-cnn rápido, normalización por lotes, etc., principalmente porque las solicitudes de extracción de github aún no están integradas con la rama maestra, pero puede encuéntralos si cavas). Hace un tiempo estaba modificando la arquitectura Maxout por Ian Goodfellow, así que usé pylearn2, que se basa en Theano. Puede ser útil si elige primero una idea en la que esté más interesado, y descubra qué marco tiene una implementación existente, y proceda desde allí.

En una nota más general, recomendaría que se mantuviera alejado de los marcos basados ​​en Theano, porque tiene una curva de aprendizaje más pronunciada debido a la abstracción del compilador simbólico. En mi experiencia, este compilador simbólico no solo es menos intuitivo de aprender, sino que también es escandalosamente ineficiente para algunas modificaciones no tan estándar que a menudo se necesitarían.

En comparación, la base de código de caffe tiene una calidad mucho menor en comparación con la de Theano o pylearn2. Tiene una arquitectura muy estrechamente acoplada que es frágil en casi todas partes (abusa de algunos estilos de codificación dinámica). Pero no se interpone en su camino al ofrecer abstracción superflua. Entonces, cuando quieres hacer algo especial, siempre es sencillo.

No tengo experiencia con torch7, así que no puedo comentar. Mi primera impresión (probablemente sesgada) es que los usuarios de torch7 no están tan interesados ​​como los usuarios de caffe sobre contribuir a la comunidad. Por supuesto, caffe tiene una comunidad mucho más grande para empezar, por lo que esto podría ser un juicio incorrecto.

En mi humilde opinión, si su objetivo es publicar en las principales conferencias, no importa qué herramienta utilice.
Si no tiene un “previo”, entonces la herramienta debería depender de qué modelo propone / usa.

  • Si está trabajando en algunas estructuras nuevas / extrañas, la auto-diferenciación es su amiga.
  • Si está trabajando en un conjunto de datos / modelo a gran escala y no tiene demasiadas GPU, y ahorrar tiempo en la computadora es realmente crucial, entonces mire los puntos de referencia (como soumith / convnet-benchmarks) y decida.

Realmente aprecio las respuestas proporcionadas por Gavin Weiguang Ding y User-13328003260494510268. Tengo algo de experiencia con Theano y MatConvnet y los puntos de referencia configurados son bastante buenos para la investigación en PNL y visión artificial. Personalmente, yo también me siento más cómodo con Python y me siento igual y, por lo tanto, intenté jugar mucho más con Theano. También sucede que a veces (debido a los plazos de entrega en papel), termino llamando a las funciones de matlab, lo cual es desordenado pero funciona. Personalmente, creo que Theano es una biblioteca increíble y realmente algo con lo que uno debería trabajar más.