Quiero usar C ++ para aprender Aprendizaje automático en lugar de Python o R, ¿está bien?

Voy a dar una perspectiva diferente a la mayoría de las otras respuestas y le diré que sí, es una buena idea usar C ++ para aprender aprendizaje automático. Por supuesto, esto supone que ya tiene un buen conocimiento práctico del idioma. Pero, si lo hace, usar C ++ para aprender aprendizaje automático me parece una buena idea. Aquí hay algunas razones de por qué:

Como mencioné en mi respuesta a ¿Cómo aprendo el aprendizaje automático ?, uno de los pasos importantes para aprenderlo si usted es un ingeniero es implementar algoritmos desde cero. Creo que muchas otras respuestas no entienden este punto porque suponen que solo quieres convertirte en un usuario de aprendizaje automático. En ese caso, estoy de acuerdo en que hay idiomas con mejores bibliotecas listas para usar. Pero, si va a implementar un algoritmo desde cero y está familiarizado con C ++, ¿por qué no usaría ese lenguaje? La única razón obvia es que C ++ es un lenguaje mucho más difícil de manejar que, por ejemplo, Python. Sin embargo, una vez más, si está familiarizado con las complejidades del idioma (asignación de memoria, punteros, referencias, plantillas, etc.), creo que en realidad es una ventaja que use C ++ en lugar de un lenguaje más “fácil de usar”.

Otra razón es que, como usted menciona, C ++ es más eficiente que la mayoría de los otros lenguajes. Y, bibliotecas importantes como TensorFlow y Torch se implementan en C ++ debajo del capó. De hecho, muchas empresas (incluidas en Quora) implementan sus algoritmos de aprendizaje automático en C ++. Claro, también usarán Python y R para experimentación y creación de prototipos, pero muchos de los algoritmos de producción terminarán en C ++.

Como nota final, si puede aprender el aprendizaje automático en C ++, se convertirá en un objetivo de contratación muy deseable. No es que no lo estarías si usaras cualquier otro idioma. Pero, la verdad es que ML + C ++ es una gran combinación que probablemente le dará acceso a posiciones muy interesantes. (Envíame un mensaje una vez que estés allí y estoy seguro de que puedo conseguirte una entrevista)

Sí, siempre puedes aprender cualquier tema con cualquier idioma, pero NO, NO ESTÁ BIEN EN APRENDER el aprendizaje automático con C ++. No hagas eso

  1. El hecho de que Python sea lento es muy exagerado. A los principiantes les gusta discutir qué lenguaje es más rápido, etc. También hice lo mismo, pero no estás escribiendo TensorFlow, solo estás tratando de implementar un simple descenso de gradiente por tu cuenta, la escala de tu problema aún está lejos de Alcanzando el cuello de botella de la velocidad del tiempo de ejecución del lenguaje.
  2. Es cierto que TensorFlow se implementa en C ++, así como muchos otros marcos de aprendizaje a gran escala (por ejemplo, caffe, vowpal wabbit, libsvm) y, según mi conocimiento, todas las rutinas de optimización. Sin embargo, notará que la mayoría de ellos tienen envoltorios de Python o Matlab. Esto significa que incluso si compila todo en Python, bajo el capó todavía está ejecutando el código C ++, por lo que realmente no hay diferencia de rendimiento.
  3. Recuerde que su principal objetivo es aprender sobre el ML, no practicar la programación. Le costaría mucho tiempo entender los conceptos matemáticos en ML solo, y unirlo con un lenguaje que es más difícil de manejar le hará mucho más lento. Y debo advertirle que la depuración del código C ++ para algoritmos ML es muy difícil. Su ciclo cerebral es mucho más valioso que el ciclo de la CPU, su tiempo es mucho más costoso que el tiempo de la CPU.

Así que mi sugerencia es hacer una cosa a la vez.

La mayoría de los cursos en línea y universitarios utilizan Matlab o Python, solo elija un curso y use el idioma que use el curso para implementar los algoritmos y resolver problemas.

Luego, si está listo para enfocarse en algún problema donde la velocidad es un factor importante, puede sumergirse en C ++ y reemplazar algunos códigos Python con C ++.

Ediciones:

Gracias a todos los upvotes y comentarios. Siento que necesito responder algunos de los comentarios muy válidos aquí, así que aquí vamos …

  1. El aprendizaje automático y la ciencia de datos en general es un área interdisciplinaria enorme, por lo que diferentes personas pueden tener opiniones muy diferentes. R o Python es más preferido en el análisis de datos o en la minería de datos, mientras que C ++ es fundamental en el aprendizaje profundo y la visión por computadora. Esta pregunta es acerca de si aprender el aprendizaje automático, y mi respuesta es solo sobre eso. Si la pregunta es sobre qué idioma usar en la creación de aplicaciones ML, no hay un claro ganador, porque las aplicaciones difieren enormemente. Si uno está intentando construir un robot, por ejemplo, está básicamente atascado en el ecosistema ROS / C ++ / CMake / Linux; Si el proyecto es predecir las tendencias de ventas para una empresa, incluso se podría considerar a Tableau por conveniencia.
  2. Podemos hacer mucho más que usar bibliotecas enlatadas en Matlab o Python, de hecho, en ambos idiomas puede implementar una regresión logística o SVM lineal sin usar ninguna biblioteca, lo cual es perfecto para fines educativos. ML en su núcleo es un conjunto de operaciones vectoriales o matriciales, que es un ajuste perfecto para Matlab y Numpy. Si aprendiera ML en C ++, ciertamente usaría Eigen para operaciones vectoriales más rápidas, el código resultante sería bastante similar al código Matlab / Numpy, así que ¿por qué no usar Matlab en su lugar?

No guardo rencor por C ++, de hecho, C ++ es mi idioma nativo. Es solo que cada idioma tiene sus pros y sus contras, y es más productivo tener una mente abierta y elegir el mejor idioma para diferentes propósitos. No es una buena idea decir que cualquier lenguaje es inútil.

Veo muchas respuestas buenas, pero sigo sintiendo que podría ser de alguna ayuda en el tema, ya que empecé con Machine Learning hace unos meses. Y como ya puedo ver cómo te gustaría usar C ++ para ML, ¡creo que es tu arma preferida! Y puedo relacionarme con eso, ya que cuando comencé, C ++ era mi arma preferida también. Y mantuve todas las opiniones exactas que sostienen a favor de C ++. Así que creo que soy el hombre para el trabajo de responder a sus preguntas.

Empecemos.

Solo para que sepas. Soy (era) un fanático de C ++ con fuerza. Créeme. Tanto que ni siquiera quise considerar usar otro lenguaje tonto interpretado más lento (lea: Python).

Pero ahora. Python es todo lo que uso. (con un poco de C ++. Los hábitos que se formaron en un lapso de 5 años no mueren fácilmente)

1. La ideología “C ++ es más rápida que Python o R”:

Olvídate de la velocidad de ejecución de C ++ por completo. C ++ es bastante rápido en comparación con Python. Sí, estoy de acuerdo con eso. Pero no importa lo bueno que seas en C ++, no importa qué IDE utilices y qué otros trucos tengas en tus mangas, cuando se trata de escribir código, Python vencerá a C ++ en cualquier momento del día. de la facilidad de implementación y la velocidad con la que le da vida a sus ideas.

Sin mencionar, una depuración más rápida, más cuando se realizan tareas intensivas y computacionales repetitivas.

El aprendizaje automático implica toneladas de lluvia de ideas y prototipos rápidos. Tienes un problema de clasificación para resolver. Se te ocurre una idea rápida de hacer las cosas. Usted querrá redactar sus ideas en el código lo más rápido posible. Y luego, de repente, tu “idea”, que parecía buena en teoría, cae en la cara en la práctica. Extrañarás a Python en ese momento. Créeme. Yo si. Los científicos e investigadores cambiarían ese pequeño aumento en el rendimiento por la facilidad de programación sin dudarlo. Quieren prototipado rápido.

2. Alguna biblioteca está implementada en C ++. Necesito usar C ++ también.

Claro, Tensorflow se implementa en C ++. Pero la interfaz existe para Python. De hecho, la mayoría (si no todas) las bibliotecas de Machine Learning están implementadas en C ++. Tensorflow ni siquiera es la punta del iceberg aquí. Todas estas bibliotecas podrían haber recurrido a no proporcionar interfaces a una gran cantidad de otros idiomas y continuar simplemente presionando C ++ a la masa. Pero no lo hicieron. ¿Por qué? El primer punto.

3. Python y sus bibliotecas están lejos de ser lentos.

He usado mi parte justa de las bibliotecas. Python, respaldado por la increíble pila Scipy (Scipy, Numpy, Matplotlib) está lejos de ser lento. Incluso me sorprendió cuando lo vi por primera vez en acción. Tantas operaciones de punto flotante, iteraciones después de iteraciones y, sin embargo, me parecieron tan rápido.

Además, muchas bibliotecas de Pythonic (por ejemplo: scikit-learn) establecen los estándares en términos de velocidad y eficiencia de algoritmos para muchos algoritmos de aprendizaje automático.

4. Python y sus similitudes con MATLAB / OCTAVE

Python respaldado por Numpy como la biblioteca de manipulación de matrices es extremadamente similar al código MATLAB. Ahora obviamente se usa mucho MATLAB. Muchos de los trabajos de investigación que se publican están respaldados por el código MATLAB para potenciar sus algoritmos. Si hay una nueva forma de hacer algo en Aprendizaje automático, existe una probabilidad bastante alta de que encuentre una implementación de MATLAB del proceso antes de que aparezca en C ++ / Python / R. Esta similitud de sintaxis, junto con la facilidad de interoperabilidad entre Python y MATLAB, es en mi opinión una gran ventaja para Python.

5. Puede que no te guste. Pero si. Usar C ++ solo para Aprendizaje Automático sería muy difícil.

Esto no es porque hay una falta de bibliotecas para C ++. Se debe al hecho de que hay más código ML escrito en R y Python flotando en Internet en comparación con el código C ++ para la misma tarea. Hay más bibliotecas, más tutoriales, más preguntas sobre el desbordamiento de pila y, básicamente, una mejor comunidad en Internet que apunta al aprendizaje automático a través de Python / R vs C ++.

Abre Kaggle. Y la mayoría de los scripts para cualquier competencia están escritos en Python o R. Una observación relativamente pequeña pero astuta.

6. Un solo lenguaje de programación no será suficiente, de todos modos.

Sea un lenguaje agnóstico. Los idiomas son solo herramientas. ¿No puedes usar C ++ / Python / R solo para ML? Por supuesto que puede. Pero en su viaje hacia la destreza del Aprendizaje Automático, definitivamente llegará a un punto en el que aprender otra tecnología se convierte en una necesidad. En realidad no hay necesidad de hacer una selección ya. Dale una oportunidad a Python. Me enamoré de ella tan pronto como puse mis ojos en ella.

A veces, tienes momentos en que “hey. El algoritmo lo exige. Tal vez si solo escribiera exactamente eso … “y realmente funcionó de inmediato. Se llama “pseudocódigo ejecutable” por una razón.

¿Significa eso que C ++ es inútil cuando se trata de Aprendizaje Automático?

No. C ++ se usa ampliamente (junto con Python y otros idiomas) cuando se implementan sus “modelos” finales. ¿Por qué se usa allí? Velocidad. ¿Quién transforma el modelo diseñado por Machine Learning y Data Scientists en un código? Personas que están en la organización para ese trabajo.

¡Espero eso ayude!

No hay nada que te impida aprender ambos, pero no creo que debas usar C ++ para “aprender ML”. Aprende C ++ (y C en blanco simple mientras estás en eso) porque vale la pena tener alguna experiencia de bajo nivel escribiendo código cerca del metal y si tienes el espíritu hacker, en algún momento querrás perder el tiempo bajo el capó. Pero aprender a conducir un auto de carrera y aprender a construir un auto de carrera no son lo mismo.

Debería conocer las principales bibliotecas de Python y R que hay, caret, sklearn, TensorFlow. Lo llevarán bastante lejos, y ya son bastante rápidos, mucho más rápido que cualquier cosa que pueda escribir usted mismo hasta que tenga muchos años trabajando con C ++ en su haber, porque las personas que los escribieron tienen esa experiencia y escribió un código más rápido de lo que usted será capaz de deshacerse del bate. También te permiten enfocarte en las muchas otras habilidades que necesitarás dominar si quieres ser bueno en eso. Habilidad de codificación es una pequeña parte del aprendizaje automático. Una gran comprensión del pensamiento probabilístico, las habilidades de análisis algorítmico general, la buena intuición espacial y la manipulación y validación de los datos serán su pan y mantequilla.

Lamentablemente, es probable que no tenga idea de dónde terminarán sus intereses y posiblemente su carrera cuando sea nuevo en esto, así que aprenda todo lo que pueda. Construye una base amplia. Si terminas en ciencia de datos, probablemente estarás usando R o Python porque eso es lo que están usando tus colegas. Si terminas en robótica, es muy probable que estés haciendo mucho trabajo en C o C ++. C ++ fue en realidad el primer lenguaje de programación que aprendí, pero las matemáticas siempre fueron y siempre serán mi primer amor. Estaba trabajando con ejercicios de libros de texto por diversión cuando tenía 5 años, antes de tocar una computadora. En mi primer trabajo relacionado con ML, utilicé principalmente Python porque eso es lo que usaba el resto del equipo y también tenían que poder usar y extender mi código. En el ejército, me sorprendió encontrar incluso en hardware no estándar y sistemas integrados, todo en red se ejecuta en una JVM, por lo que estoy usando Java o Scala.

No es como Internet. Por lo general, no usas solo el idioma que personalmente consideres mejor. Debe integrarse con las bases de código existentes y usar lo que su empleador le dice que use. Su valor central es su conocimiento de ML en sí, no de un lenguaje de programación específico, y debería poder traducir sus habilidades y conocimientos en ese dominio utilizando las herramientas necesarias. Descubrirá rápidamente a medida que juega con diferentes bibliotecas que cada lenguaje de alto nivel que cualquiera esté usando para computación numérica o científica tiene vínculos con bibliotecas HPC bastante rápidas y realizará el trabajo para cualquier cosa que no sean las tareas más informáticas. , cosas como la gran simulación de celdas de tormenta que un amigo mío hace para ganarse la vida para la NOAA y todavía están usando Fortran. Por supuesto, mi esposa solía hacer simulaciones de impacto de misiles para la Armada, simulaciones que a veces se ejecutaban durante semanas, y usaban MATLAB. Si su trabajo está en un dominio específico, a menudo un idioma específico del dominio hará el trabajo, incluso si sería muy lento si intentara escribir un servidor web usándolo. Hay una razón por la que se llaman ‘específicos de dominio’. Cualquiera que llame a Python lento es casi seguro que no lo usa para hacer álgebra lineal. Le llevará mucho tiempo llegar al punto en que puede implementar un algoritmo de Strassen de subprocesos múltiples en C que se ejecuta tan rápido como el de NumPy.

Puedes si quieres. Lo he hecho, todavía lo hago. La ventaja de hacerlo en c ++ es la velocidad, por supuesto. Otra ventaja es que desarrollas una comprensión más íntima del algoritmo porque acabas teniendo que escribir toneladas de eso tú mismo.

Puede ser útil cuando necesita una solución que se ejecute rápidamente en la práctica.

Por otro lado, hay beneficios al usar otros lenguajes como Python, por ejemplo.

Si conoces C ++, Python será muy fácil de aprender. Es más probable que las API de aprendizaje automático de Python funcionen sin problemas y serán mucho más fáciles de usar. La razón es que hay una comunidad de aprendizaje de máquina mucho más grande que usa Python que la que usa c ++. Por lo tanto, será más fácil encontrar implementaciones de los últimos y mejores algoritmos de aprendizaje en Python. Además, analizar, trazar y raspar datos es mucho más fácil en Python que en c ++.

También tiene la opción de utilizar varios idiomas. Por ejemplo, puede aprovechar la comunidad de aprendizaje automático y usar Python para hacer un prototipo y realizar el aprendizaje, luego usar la salida en un algoritmo de c ++. Por ejemplo, optimice los pesos de una red neuronal en Python y use los pesos en un programa c ++ (como un juego, por ejemplo).

Mi sugerencia es ir con lo que prefieras. Ve con el que más te interese. Si tienes en mente un proyecto c ++ específico, entonces úsalo. Pero siempre mantén una mente abierta con respecto a Python y no dejes que la idea de lentitud te ciegue las ventajas, porque probablemente podrás hacer más experimentos de más técnicas en menos tiempo que en C ++. Eso es una buena velocidad.

Está bien implementar bibliotecas de aprendizaje automático en C ++.

Python y R a menudo tienen bibliotecas de aprendizaje automático que están escritas en C / C ++ / Cuda y otras bibliotecas escritas en Fortran; el código de Python generalmente solo se necesita / usa para la configuración, pero la mayoría del trabajo numérico se realiza en C / C ++ / Bibliotecas Cuda / Fortran. Así que no estás perdiendo mucha velocidad usando las bibliotecas de python.

Los idiomas de nivel superior son mejores para el aprendizaje automático (según Andrew Ng, que enseña aprendizaje automático con Octave / Mathematica y ha intentado aprender el aprendizaje automático en idiomas inferiores y descubrió que los estudiantes aprenden más rápido con idiomas de nivel superior) porque puede implementar los algoritmos centrales más rápido y eficiente, explore variaciones, etc. Es probable que también se beneficie de una carga cognitiva disminuida.

De las publicaciones que leí en Quora en ML

insinuó que la mayoría de los usuarios utilizan Python & R.

  • R ya que ha estado ahí por mucho tiempo.
  • Python está ganando poco a poco la popularidad.
  • Esta mayoría de las personas son usuarios de las bibliotecas existentes listas para usar a través de Python o R.

Además, dijeron, los usuarios también deberían conocer C ++, debido a las siguientes razones:

  • Las bibliotecas mencionadas anteriormente en uso por R o Python, se crean en C ++.
  • Si necesita una nueva biblioteca que aún no esté en las bibliotecas existentes, o si se requiere algo de personalización, entonces C ++ es necesario de todos modos. Por lo tanto, también es bueno tener conocimientos de C ++, de lo contrario, necesita ese desarrollador que sepa C ++ y parcialmente ML.

Ya que su interés está en C ++, debe intentar aprender lo que ya existe en Python o R, entrar y estudiar las bibliotecas creadas en C ++.

En el futuro, podría ser ese desarrollador de C ++ que desarrolla / mantiene esas bibliotecas.

Una última cosa es tener en cuenta que ML no significa R o Python o C ++, es la funcionalidad de esas bibliotecas. Por lo tanto, el aprendizaje de ML no depende de un lenguaje en particular, aunque si ya existe la funcionalidad en una biblioteca para un lenguaje de programación que utiliza, es fácil probarlo / aprender, es decir, facilita el aprendizaje de ML.

Espero que haya ayudado.

Todas las respuestas hasta ahora se pierden el hecho de que en realidad existen algunas bibliotecas de ML para C ++.

Echa un vistazo a estos:

  • una biblioteca de aprendizaje automático de C ++ escalable
  • Shark Machine Learning Library

No estoy familiarizado con la calidad de ninguno de estos. Es casi seguro que no están a la altura de scikit-learn y CARET, pero pueden darle un buen punto de partida.

Si puede escribir sus algoritmos en C ++ desde el principio, obviamente tendrá una gran ventaja de velocidad, pero tenga en cuenta que la creación de prototipos será más tediosa.

Veamos, puede tener la sensación de que “no quiero usar ninguna biblioteca, quiero codificar desde cero”, está bien, no es tan malo, pero primero debe obtener la infraestructura.

He implementado Kmeans, DBScan, Gradient descent y algunas redes neuronales para la clasificación … y NO, no está bien 🙁

Algunas veces necesitas monitorear algo por motivos de depuración, y el resultado es: implementar un código de monitoreo desde cero, trabajar con la API de win32 y luchar con BitBlt y otras cosas de dibujo.

A veces necesitas ejecutar muchas funciones en paralelo, y terminarás leyendo muchas pestañas sobre la función `CreateThread`.

Por lo tanto, en mi opinión, no comience con C ++ a menos que tenga las herramientas para dibujar, monitorear y depurar.

Después de muchas implementaciones en C ++, recomiendo MATLAB (o GNU Octave) en el nivel de “prueba de concepto” para que pueda entender la teoría detrás del algoritmo AI que está aprendiendo sin el lío con el monitoreo, entonces, después, puede usar lo que sea. el lenguaje que desee para agudizar la implementación con un programa más rápido, ligero y flexible.

No solo está bien, es altamente recomendable. Sí, C ++ es más rápido que cualquier lenguaje interpretado como Python. Sí, hay millones de bibliotecas implementadas en C ++. No solo eso, sino que también puede vincular bibliotecas desde otros lenguajes compilados como C y Fortran, y hay millones de bibliotecas en estos otros dos idiomas.

Aquí está la clave para aprender C ++: créalo o no, no necesita saber todo el idioma para poder programarlo. Solo un pequeño subconjunto servirá: el lenguaje C, por ejemplo, que es relativamente pequeño. No deberías estar satisfecho con eso, obviamente. Sigue agregando a tu conjunto de habilidades. Aprender objetos. Luego aprende plantillas. Luego aprenda la biblioteca de plantillas estándar (STL), etc.

Mi propia biblioteca de aprendizaje automático se implementa en C ++:

Peteysoft / libmsci

Usa el idioma con el que te sientas más cómodo. Te ayudará a derivar una lógica con facilidad. Ya que está preguntando acerca de C ++ para el aprendizaje automático, aquí les ofrezco las ventajas y desventajas de C ++ en el aprendizaje automático.

Ventajas

  • Velocidad, controlas la mayoría de las cosas (memoria, etc.), por lo tanto, depurar es más fácil una vez que tienes el código
  • Más difícil de conseguir un primer prototipo funcional, la comunidad centrada en ML probablemente más pequeña, menos bibliotecas enfocándose en ML

Desventajas

  • C ++ sigue siendo imbatible para big data.
  • C ++ no tiene un compilador aceptado universalmente y, por lo tanto, todos los compiladores intentan ser el Jack de todos los oficios y terminan en velocidad de trading por generalidad.

Si quedó satisfecho con la respuesta y desea encontrar un tutorial que sea lo suficientemente bueno como para aprender el aprendizaje automático, debe consultar Hackr.io – Encuentre y comparta los mejores cursos y tutoriales de programación en línea o Your Home for Data Science

Los sistemas de robots pueden considerarse bibliotecas AI / ML y se implementan principalmente en C ++. Está bien usar C ++, pero me parece que practicar en competencias en línea es la mejor manera de desarrollar habilidades como programador. Rara vez hay algún otro enfoque, así que cuando realmente comienzas con la programación, asegúrate de tener habilidades que puedan resolver problemas y aumentar gradualmente el nivel de problemas que resuelves.

En realidad, la robótica probabilística es un gran campo de la IA, pero el hecho principal es que debes tener habilidades sólidas de C ++ y con la cantidad de competiciones en línea que puedes mejorar relativamente rápido.

Problemas. (Al menos desde mi propia perspectiva) incluyen

Diseño en C ++ de una solución ML / AI.

Comprensión matemática

Conocimiento de la STL y cómo escribir código eficiente con la STL

Estadística. Algoritmos de regresión de la teoría de la probabilidad

Diseño de topología de red neuronal

Algoritmos de búsqueda basados ​​en la población

Inferencia borrosa

Tienes que entender esto y traducirlo a buen código.

C ++ se ejecuta más rápido para “algunos” algoritmos. Sin embargo, muchas de las bibliotecas de Python, como scikit-learn, están escritas en su mayoría en Python, Cython, C y C ++

Python es un lenguaje más fácil de leer y recoger que C ++. También hay una comunidad de paquetes de código abierto más grande y una gran cantidad de tutoriales y instrucciones. Te recomendaría que aprendas Aprendizaje automático con Python. Si realmente te gusta, comienza a aprender a usar algunos paquetes de C ++.

Está bien hacer su trabajo de aprendizaje de máquina en C ++. De hecho, las bibliotecas de aprendizaje automático de Python y R ya tienen los bits de uso intensivo de cómputo escritos en C y C ++, por razones de rendimiento (la razón por la que no ve una gran diferencia entre su rendimiento y el C ++ directo).

El principio diferente en el uso de C ++ es la diferencia entre usar un lenguaje compilado de nivel inferior y un lenguaje de scripting de nivel superior. Encontrará recursos para la mayoría de los algoritmos en la mayoría de los idiomas. Los lenguajes de scripting son más convenientes para la ejecución del análisis, ya que pueden modificarse rápidamente sin compilarse y, en realidad, muy poco preocupados por los mecanismos y tipos subyacentes. C ++ le ofrece el potencial para el mejor rendimiento posible que podría obtener sin pasar a la computación distribuida masivamente (como a través de Spark).

Si eres más conveniente y hábil en C ++, siéntete libre de hacerlo en C ++. Incluso si todos los demás dicen que es más fácil en Python o R, pero si no tienes un conocimiento adecuado de ellos, terminarás aprendiéndolos a lo largo de ML, lo que dificulta tu vida porque estás aprendiendo dos cosas a la vez. Solo hay unos pocos temas de programación de computadora que enlazan a un lenguaje específico, ML no es uno de ellos. ¿Competente en ASM? Siéntase libre de hacer ML en ASM.

Por supuesto que puedes, pero si estás aprendiendo, entonces realmente recomiendo usar un lenguaje más simple. Siempre puede volver a implementar su código de producción en C ++.

La razón es que C ++ es difícil de depurar. Y en el aprendizaje automático, la depuración es el rey.

Si quieres usar una biblioteca, usa enlaces o escribe el tuyo. ¡No reimplementes las cosas desde cero!

Espero que esta respuesta ayude.

La mayoría de la comunidad de ML usa R o Python. Puedo entender que no te gustan esos idiomas (me pierdo Python cada vez, el hecho de que se escriba dinámicamente me dificulta la lectura). Supongo que eso es algo personal, y no hay nada de malo en usar un idioma diferente … excepto por una cosa: perderá mucha ayuda en los foros, falta de un conjunto de ejemplos para comenzar, etc. en casa en un mundo java (C ++ antes de eso) y he elegido deeplearning4j como plataforma y esto funciona muy bien para mí. Estoy seguro de que hay algo similar en C ++, por lo que puedes encontrar los ejemplos que a menudo se necesitan.

hey amigo El aprendizaje automático consiste más en encontrar patrones de datos y menos programación . Puede usar cualquier lenguaje de programación. Pero Python, R es una herramienta muy popular si incurre en problemas con respecto a los recursos disponibles para ayudarlo. Si quieres un rendimiento tan rápido como C y fácil como Python, puedes probar el lenguaje de programación Julia

No hagas eso Python es una mejor opción.

Python admite operaciones de matriz de alto nivel de forma intuitiva. Tenga en cuenta que el álgebra lineal es la base para ML, Python es más apropiado para ML que C ++, Java o Scala.

C ++ es el lenguaje más rápido en tiempo de ejecución en comparación con Python o R, así que sí. Pero para pruebas y creación de prototipos use Python o R, ya que tomará menos tiempo construir y probar en comparación con c ++. En base a eso, le recomendaría que implementara su algoritmo en R o Python, y si todo está bien, vuelva a implementarlo en C ++.