Hay unas pocas razones. En primer lugar, no hay muchas bibliotecas que admitan el tipo de computación científica que requieren las Redes neuronales profundas (DNN). Go ha sido ignorado por esta comunidad. Simplemente no hay suficientes características convincentes para acceder y hay algunas desventajas. Sure Go puede llamar a las bibliotecas C (y ordenar las de C ++), pero hay un golpe por llamada que es difícil de ignorar. Es más fácil permanecer en Python, LuaJIT y Julia y disfrutar de REPL, escritura más libre y una gran cantidad de otras opciones.
La segunda razón es un poco menos clara, pero en general Go no funcionará tan bien en este campo como lo hace en general. Hay muy poca optimización para las instrucciones y subsistemas SIMD en CPU genéricas, y mucho menos GPU o hardware especializado. Implementar algo como una FFT va a sufrir. Extiéndalo a través de los núcleos y la sobrecarga de gochannel podría ser más grande que el grano de la computación (esto requiere una consideración cuidadosa para evitar desaceleraciones y mucho menos aumentar la velocidad del paralelismo).
Cuando aparece la opción para diferentes tipos de optimización en la comunidad Go, hay una voz mucho más fuerte para acelerar los tiempos de compilación que para un código más rápido. Para DevOps, eso tiene sentido (aunque Go construye lo suficientemente rápido en mi opinión), pero alguien que tiene que alquilar o comprar grandes cantidades de hardware para completar grandes trabajos científicos no lo hace.
- ¿Cuál puede ser un buen proyecto de curso de 3 meses relacionado con el procesamiento del habla y el aprendizaje automático?
- ¿Cuál es la diferencia entre un enrutador CNC y un molinillo CNC?
- ¿Cuál es la diferencia entre estadística y aprendizaje automático?
- ¿Cómo está estudiando Conner Davis el aprendizaje automático?
- Por lo general, los RNN se usan para PNL, ¿cuándo tienen sentido los CNN en PNL?
Claro, Go puede convertirse en un buen entorno para la informática científica, para incluir DNN, pero no es el foco. Está diseñado para construir el back-end que se ejecuta en servidores. Es realmente bueno en esto y creo que continuará enfocándose en esa vertical. Hay un gran impulso en otros idiomas que Go tendría que ponerse al día. Python ha estado acumulando este vapor durante años. Julia eligió esta área para enfocarse y está diseñada para apoyarse en gran medida en Python, R y la infraestructura C / C ++ existente para obtener una ventaja. LuaJIT puede apoyarse en C y es tan rápido y eficiente en el uso de las capacidades SIMD de los procesadores que fue una elección rápida y lógica. Go no tiene ninguna de estas cosas en marcha hoy.