¿Es C ++ un buen lenguaje para el aprendizaje automático?

Usar C ++ de manera adecuada puede hacer que sus programas se ejecuten más rápido, por lo que la velocidad y la eficiencia son la clave aquí. Pregúnteles a las personas que usan OpenCV: todos elogian el uso de C ++ en lugar de Python.

Utilicé Java, R, MATLAB, python, etc. para mi trabajo de ML porque había muchas bibliotecas de ML que admitían esos idiomas. Pero hay otras opciones disponibles en C ++ también como mlpack, una biblioteca escalable de aprendizaje automático de C ++.

Editar

Había estado utilizando principalmente otros idiomas / plataformas porque mi trabajo es investigar y probar los algoritmos, por lo que necesitaba ciertas herramientas para ayudarme a evitar el tiempo dedicado a reinventar la rueda. Si desea implementar un sistema, si sabe exactamente lo que quiere hacer, si su arquitectura y algoritmos están configurados, entonces probablemente C ++ sea la forma correcta, pero normalmente en la investigación es difícil seguir ese camino. Creo que es más una conveniencia y una cosa basada en la necesidad.

No es un buen lenguaje de creación rápida de prototipos. Puede usar un lenguaje como Python cuando intente diferentes cosas para ver qué enfoques funcionan mejor. Puede ahorrarle tiempo frente a la creación de prototipos en C ++.

Sin embargo, C ++ es bueno para los sistemas de producción, cuando ya sabe qué algoritmo desea usar y quiere que sea rápido.

Por otro lado, a menudo hay enlaces de Python (interfaces) para bibliotecas de aprendizaje automático implementadas en C / C ++ / CUDA. Eso le permite escribir su código en Python y aún obtener la mayoría de los beneficios de C ++, si deja todos los cálculos pesados ​​en la biblioteca.

La respuesta corta es sí, los algoritmos de aprendizaje automático deben ser rápidos y estar bien codificados. La cuestión con C ++ es que puede implementar sistemas sofisticados de visión por computadora y aprendizaje automático desde cero.

C ++ le da acceso a manipulaciones directas del puntero y muchas más funciones de bajo nivel, como la elección del sistema de administración de memoria. Puede crear sus propios algoritmos para manejar asignaciones de memoria y desasignaciones.

Normalmente no me gusta tratar los algoritmos como cajas negras, pruebo cosas para ver y comprender el funcionamiento interno de un sistema para poder diseñar e implementar un sistema mejor.

Entonces todo se reduce a cuánto necesitas saber. Si quieres saber más sobre el aprendizaje automático a un nivel experto práctico, entonces necesitas dividir las cosas y espiar dentro.

Esta técnica de aprendizaje es útil de muchas maneras.

  • Comprensión : tendrá una comprensión más profunda de las técnicas actuales de aprendizaje automático de una manera especial, a diferencia de la mayoría de los otros expertos que tratan el aprendizaje automático como cajas negras.
  • Diseño : la comprensión más profunda lo ayudaría aún más cuando diseñe sus propios algoritmos de aprendizaje automático que sean novedosos o mejores de lo que tenemos actualmente.
  • Implementación : Será más fácil para usted implementar su propio sistema una vez que haya entendido cuidadosamente las limitaciones del sistema actual.

A veces es importante reutilizar los códigos existentes, pero es posible que esté limitado a la hora de comercializar su sistema debido a problemas de derechos de autor y otras cosas.

Las bibliotecas públicas también suelen ser más lentas que las bibliotecas internas. Esto se debe a que el alcance de la biblioteca pública es demasiado grande o, en resumen, no están especializados. OpenCv, por ejemplo, es demasiado lento en la mayoría de los casos debido a que intenta admitir demasiadas funcionalidades.

Escribí mi propia biblioteca de visión artificial y aprendizaje automático que utilizo para codificar algoritmos novedosos y sofisticados. Esto puede sonar como una broma, pero no lo es, realmente estoy desarrollando nuevos algoritmos nunca antes explorados.

C ++ es un excelente lenguaje de programación para personas como yo que desean explorar nuevas formas de hacer las cosas. Le permite escribir su propia biblioteca, que sería mucho más rápida que las bibliotecas públicas existentes.

Investigué un poco sobre TensorFlow y descubrí que en realidad es más lento que otras bibliotecas para el aprendizaje profundo. Google en realidad no abrió la fuente completa de la biblioteca TensorFlow que parece. Por lo tanto, a veces las bibliotecas pueden no brindarle el mejor rendimiento.

Pero es importante tener en cuenta que puede crear prototipos rápidamente de sus sistemas utilizando bibliotecas públicas y luego cambiar a la codificación C ++ cuando desee acelerar las cosas.

Espero que esto ayude.

El lenguaje no es importante en el aprendizaje automático. Necesita desarrollar habilidades para comprender los modelos matemáticos. Estoy haciendo mis proyectos en C ++. Implementé muchos clasificadores básicos y algoritmos de agrupamiento en C ++. Cuando el aprendizaje automático se convierte en parte de todo su proyecto, puede usar las bibliotecas.

Tengo muchos amigos que trabajan en Python y dicen que es fácil en Python. Pero la cuestión es que si quieres aprender un nuevo idioma está bien. Creo que la flexibilidad en el lenguaje es muy vital a medida que continúas trabajando.

Por ahora, si conoce una codificación decente usando C ++, puede comenzar a implementar en C ++.

Espero que esto te motive y te ayude.

Todo lo mejor.

Depende de una pregunta detallada: C ++ es definitivamente bueno en términos de rendimiento, por lo que puede usarse para implementar algoritmos para que funcionen rápido.

PERO

probablemente no sea la mejor opción para APRENDIZAJE (también: pruebas, creación de prototipos) de aprendizaje automático; en ese caso, debería considerar cambiar a Python, R o MATLAB.

C ++ está bien. Pero creo que deberías intentar buscar en Google python + machine learning, entonces sabrás la respuesta. También puede tener alguna idea de la imagen a continuación.

C ++ es bueno, pero en mi opinión deberías usar Python, ya que Python es bastante fácil de aprender , es multiplataforma que significa que puedes escribir código en Linux e implementarlo en Windows con pocos o ningún cambio.

También tiene muchas bibliotecas de aprendizaje automático como TensorFlow, PyTorch, scikit-learn: aprendizaje automático en Python y mucho más.

More Interesting

¿De qué manera las competencias de minería de datos y aprendizaje automático ayudan / restan valor a estos campos académicos y sus aplicaciones comerciales?

¿Cómo se hace la inferencia en una red neuronal con capas de normalización por lotes?

¿Qué soluciones se están construyendo utilizando la tecnología IBM Watson?

Cómo depurar sus proyectos de ciencia de datos y aprendizaje automático

¿La topografía emocional es relevante para IR?

¿Cómo se elige una función de activación? He notado que las funciones más utilizadas se parecen, especialmente cerca de 0. ¿Tienen que ajustarse a algún comportamiento específico? ¿Es este un tema de investigación abierto? ¿Hace una gran diferencia en los resultados?

¿Qué es el aprendizaje automático?

¿Cuál es la motivación de Google para el código abierto del modelo de TensorFlow para problemas ML / NLP como el resumen automático de texto?

¿Cuándo debo coseno similitud? ¿Se puede usar para la agrupación?

¿Qué tan difícil es aprender el aprendizaje automático y el aprendizaje profundo después de los 30 años?

¿Cuáles son algunos conjuntos de datos etiquetados disponibles públicamente que usan Kinect para su uso en la investigación de la visión por computadora?

¿Tenemos que aprender matemáticas detrás de cada algoritmo de aprendizaje automático?

¿Podrían las entradas del algoritmo de entrenamiento Perceptron tener diferentes tipos?

En el procesamiento del lenguaje natural para realizar análisis semántico, ¿es útil y necesario generar un árbol de análisis?

¿Cuál es el mejor instituto de capacitación para el aprendizaje automático en Hyderabad?