Su pregunta es bastante amplia, pero intentaré responderla lo mejor que pueda. Es mejor pensar en una aplicación de aprendizaje profundo en términos de una tubería, independientemente de la tarea (imágenes, discurso, clase única, clase múltiple, etc.):
- Primero, tienes un NN (o algún otro tipo de red neuronal)
- Luego tiene (en su caso) un clasificador (en su caso, un SVM) que utiliza la salida de la red neuronal (las características) para realizar alguna tarea.
Ahora que sabemos que su canalización tiene dos pasos (NN y clasificador), puede pensar en la capacitación y la inferencia en ambos pasos de su canalización; la respuesta para qué biblioteca o herramienta utilizar puede depender de las compensaciones para cada paso en su canalización. Debe preguntarse qué es importante tanto para la capacitación como para la inferencia:
- Formación
- ¿Necesito usar GPU? ¿Necesito múltiples GPU?
- ¿Cambiaré mi arquitectura de red con frecuencia?
- ¿Voy a estar entrenando más desde cero o afinando?
- Inferencia
- ¿En qué sistema operativo necesito asistencia?
- ¿Necesito usar GPU para inferencia?
- ¿Con qué frecuencia quiero tratar de actualizar mi biblioteca?
Si le interesa más la inferencia que la capacitación, es más probable que elija dos marcos / bibliotecas diferentes para la capacitación y la inferencia. Por ejemplo, trabajé en una startup donde el tiempo de entrenamiento no importaba (y los investigadores fueron los que entrenaron de todos modos), por lo que los investigadores usaron una herramienta para el entrenamiento y los ingenieros simplemente tomaron la red final como un producto terminado y usaron un conjunto separado de herramientas para facilitar la inferencia y la implementación. Su caso de uso puede variar: no recomiendo este enfoque a menos que tenga un equipo (o dos) con diferentes puntos de vista, objetivos o enfoques. Todas las recomendaciones que hago a continuación son excelentes tanto para la capacitación como para la inferencia en mi experiencia.
- ¿Cuál es el futuro del aprendizaje por refuerzo?
- ¿Cómo debo representar las características para la clasificación de texto?
- ¿Cuáles son las mejores herramientas para la minería de datos en Internet? ¿Qué debo usar para configurar un evento automático / alerta de tendencia?
- ¿Qué son los algoritmos recurrentes de redes neuronales?
- ¿Cómo superan los modelos de lenguaje neuronal (NLM) la maldición del problema de dimensionalidad para modelar el lenguaje natural?
Decidir
Lo primero que desea decidir es biblioteca vs marco . ¿Con qué frecuencia tendrá que entrar en las tripas de la operación de convolución y escribir un nuevo contenedor? No a menudo, es posible que desee considerar un marco. ¿Vas a escribir capas personalizadas y tipos de datos? En caso afirmativo, es posible que desee una biblioteca.
Bibliotecas Python NN
Hay una serie de bibliotecas de aprendizaje profundo basadas en Python que se pueden usar tanto para capacitación como para inferencia. Le recomiendo que mire cada biblioteca por su facilidad de compilación / facilidad de implementación, dependiendo de su caso de uso. Los principales que usa la mayoría de las personas que tienen enlaces de Python son estos:
- Caffe (Caffe | Marco de aprendizaje profundo)
- TensorFlow (TensorFlow)
- Theano (Bienvenido – Documentación de Theano 0.8.2)
Marcos
- Keras (Documentación de Keras)
- Lasange (Bienvenido a Lasagne)
Bibliotecas de clasificación
Para ocuparse del paso de clasificación después de su NN, desea utilizar una biblioteca de Python que emplee muchos modelos diferentes de aprendizaje automático a los que puede alimentar las características de la red neuronal. Hay algunos por ahí, pero recomendaría encarecidamente scikit-learn (scikit-learn: machine learning en Python) porque tiene soporte para SVM, regresión logística, vecinos más cercanos, redes Bayes y casi cualquier otro single o multi – aplicación de clase.