Soy el desarrollador principal de Theano, así que estoy en una muy buena posición para
Responde esta pregunta.
Mi conclusión sin sorpresa es que Theano es muy rápido para DBN y
otro marco no puede ser significativamente más rápido para modelos grandes.
Mi argumento es que lo hemos comparado en CPU y GPU contra
otras implementaciones en algunos modelos, incluido un MLP de 3 capas:
Página sobre Arxiv. La conclusión de este punto de referencia
es que Theano fue tan rápido como Torch. La razón es simple: el
el cuello de botella del modelo está dentro de BLAS (una biblioteca externa para algunos
operación de vector / matriz, incluido el producto de puntos) y tanto Theano como
La antorcha lo usa correctamente. Entonces, si ambos software (y cualquier otra biblioteca)
use la misma versión de BLAS que en todos los buenos puntos de referencia, y que el
El cuello de botella del algoritmo es BLAS como para MLP y DBN. Ningún marco puede
Realmente sea más rápido que el otro.
- ¿Cómo soluciona un máximo A posterior el problema de sobreajuste en una estimación de máxima verosimilitud?
- ¿Cuál es el mejor lenguaje de programación para el aprendizaje automático? ¿Qué idioma es mejor para programar microcontroladores y otras partes de hardware?
- ¿Cuáles son las instituciones en India que ofrecen cursos de aprendizaje automático y minería de datos y cuáles son las áreas posteriores?
- ¿La normalización de lotes hará la diferencia al entrenar con tamaño de lote = 1?
- Cómo hacer ingeniería de características en aprendizaje automático
Acabo de perfilar nuevamente este punto de referencia para tener el número real. En esto
MLP de 3 capas en la GPU, pasamos el 80% del tiempo dentro de BLAS
operación. DBN tiene un cálculo muy similar a MLP y su
El cuello de botella del algoritmo también es BLAS.
Sobre Alex cuda-convnet. No puede ser significativamente más rápido en DBN
entonces Theano por la misma razón por la que Torch y Theano eran igualmente
rápido. cuda-convnet tuvo una implementación más rápida de convolución en
GPU Lo envolvimos dentro de Pylearn2 que está encima de Theano. Entonces el
El código de convolución ahora debe ejecutarse a la misma velocidad. (Sin referencia)
No tememos envolver el código de otras personas cuando son más rápidos. Queremos
sea lo más rápido posible y no nos gusta volver a implementar otros
Código rápido de personas. Entonces, si vuelve a suceder en el futuro, como con
cuda-convnet que alguien más implementa una operación para ser
más rápido, cuéntanos! Se puede agregar en Theano.