paint-brush
Principales bibliotecas de aprendizaje automático C/C++ para ciencia de datospor@sharmi1206
29,401 lecturas
29,401 lecturas

Principales bibliotecas de aprendizaje automático C/C++ para ciencia de datos

por Sharmistha Chatterjee8m2020/10/18
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

C++ es ideal para el equilibrio de carga dinámico, el almacenamiento en caché adaptativo y el desarrollo de marcos y bibliotecas de big data. MapReduce de Google, MongoDB, la mayoría de las bibliotecas de aprendizaje profundo que se enumeran a continuación se han implementado utilizando C++. Caffe está escrito en C ++ para un marco de aprendizaje profundo, ha sido desarrollado por Berkeley Vision and Learning Center. TensorFlow de Google AI tiene su propio ecosistema de herramientas, bibliotecas y recursos comunitarios que permite a los investigadores y desarrolladores crear e implementar fácilmente aplicaciones basadas en ML.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Principales bibliotecas de aprendizaje automático C/C++ para ciencia de datos
Sharmistha Chatterjee HackerNoon profile picture
Importancia de C++ en Data Science y Big Data

Introducción y motivación: por qué C++

C++ es ideal para el equilibrio de carga dinámico , el almacenamiento en caché adaptativo y el desarrollo de marcos y bibliotecas de big data . MapReduce de Google, MongoDB , la mayoría de las bibliotecas de aprendizaje profundo que se enumeran a continuación se han implementado utilizando C++. Scylla , conocida por su latencia ultrabaja y su rendimiento extremadamente alto, está codificada con C++ y actúa como reemplazo de Apache Cassandra y Amazon DynamoDB .

Con algunas de las ventajas únicas de C++ como lenguaje de programación (incluida la administración de memoria, las características de rendimiento y la programación de sistemas ), definitivamente sirve como una de las herramientas más eficientes para desarrollar bibliotecas de Big Data y ciencia de datos escalables y rápidas.

Además, Julia (un lenguaje compilado e interactivo , desarrollado por el MIT ) está emergiendo como un competidor potencial de Python en el campo de la computación científica y el procesamiento de datos. Su alta velocidad de procesamiento, paralelismo, estático junto con escritura dinámica y enlaces de C++ para conectar bibliotecas, ha facilitado el trabajo para que los desarrolladores/científicos de datos integren y usen C++ como ciencia de datos y biblioteca de big data.

Echemos un vistazo más de cerca a las diferentes bibliotecas de C++ que pueden ser útiles para todos los científicos de datos para los modelos tradicionales y de aprendizaje profundo.

1. TensorFlow de Google AI

Popular biblioteca de aprendizaje profundo desarrollada por Google con su propio ecosistema de herramientas, bibliotecas y recursos comunitarios que permite a los investigadores y desarrolladores crear e implementar aplicaciones basadas en ML fácilmente

https://www.tensorflow.org/lite/microcontrollers/library https://github.com/tensorflow/serving

2. Café de Berkeley

La arquitectura convolucional para la incrustación rápida de características o Caffe está escrita en C++ para un marco de aprendizaje profundo y ha sido desarrollada por Berkeley Vision and Learning Center.

https://github.com/intel/café

3. Kit de herramientas cognitivas de Microsoft (CNTK)

Microsoft Cognitive Toolkit es un kit de herramientas de aprendizaje profundo unificado que ayuda a traducir las redes neuronales como una serie de pasos computacionales a través de un gráfico dirigido.

4. Biblioteca mlpack

mlpack : es una biblioteca de aprendizaje automático rápida y flexible, escrita en C ++, que proporciona algoritmos de aprendizaje automático de vanguardia con enlaces de Python, enlaces de Julia y clases de C ++.

5 . DyNet

Dynamic Neural Network Toolkit (admite gráficos computacionales sobre la marcha) o DyNet es una biblioteca de redes neuronales de alto rendimiento escrita en C++ (con enlaces en Python) que se ejecuta de manera eficiente en CPU o GPU. Tiene soporte para procesamiento de lenguaje natural, estructuras gráficas, aprendizaje por refuerzo y otros similares.

6. Shogún

Shogun es una biblioteca de aprendizaje automático de código abierto que ofrece una amplia gama de métodos de aprendizaje automático eficientes y unificados, como la combinación de múltiples representaciones de datos, clases de algoritmos y herramientas de propósito general para la creación rápida de prototipos de canalizaciones de datos.

7. VENEZUELA

Fast Artificial Neural Network es una red neuronal artificial multicapa en C compatible con redes totalmente conectadas y escasamente conectadas. Tiene soporte para ejecución multiplataforma tanto en puntos fijos como flotantes. Además, tiene soporte para el entrenamiento basado en topología en evolución y el entrenamiento del modelo DL basado en la retropropagación.

8. Abrir NN

Open Neural Networks (OpenNN) es una biblioteca de alto rendimiento de redes neuronales de código abierto (C/C++) para análisis avanzado, con soporte para clasificación, regresión, pronóstico, entre otros.

9. Biblioteca de TIBURONES

Shark es una biblioteca de aprendizaje automático rápida, modular y general de código abierto (C/C++), para aplicaciones e investigación, con soporte para optimización lineal y no lineal, algoritmos de aprendizaje basados en kernel, redes neuronales y varias otras técnicas de aprendizaje automático.

10. Armadillo

Armadillo es una biblioteca de álgebra lineal (C/C++) con una funcionalidad similar a Matlab. La biblioteca es famosa por la conversión rápida de código de investigación en entornos de producción, para reconocimiento de patrones, visión por computadora, procesamiento de señales, bioinformática, estadística, econometría, entre otros.

11. Fisis

faiss : esta biblioteca (C/C++) se utiliza para la búsqueda eficiente de similitudes y la agrupación de vectores densos. Contiene algoritmos que buscan en conjuntos de vectores de cualquier tamaño, hasta aquellos que posiblemente no quepan en la RAM. También tiene soporte para GPU opcional proporcionado a través de CUDA y una interfaz de Python opcional.

12.Bosque aleatorio

13. Impulso

XGBoost : una biblioteca de potenciación de gradiente de propósito general optimizada paralelizada.

ThunderGBM : una biblioteca rápida para GBDT y bosques aleatorios en GPU.

LightGBM : el marco de impulso de gradiente rápido, distribuido y de alto rendimiento de Microsoft (GBDT, GBRT, GBM o MART) basado en algoritmos de árboles de decisión, que se utiliza para clasificar, clasificar y muchas otras tareas de aprendizaje automático.

CatBoost : aumento de gradiente de propósito general en la biblioteca de árboles de decisión con soporte de características categóricas listas para usar. Es fácil de instalar, contiene una implementación de inferencia rápida y admite el cálculo de CPU y GPU (incluso múltiples GPU).

14. Sistemas de recomendación

Recomendador : biblioteca AC para recomendaciones/sugerencias de productos mediante filtrado colaborativo (CF).

Sistema de recomendación híbrido: un sistema de recomendación híbrido basado en algoritmos de aprendizaje de scikit

15. Procesamiento del lenguaje natural

Analizador BLLIP : analizador de lenguaje natural BLLIP (también conocido como analizador Charniak-Johnson).

colibri-core : biblioteca de C++, herramientas de línea de comandos y vinculación de Python para extraer y trabajar con construcciones lingüísticas básicas como n-grams y skiagrams de una manera rápida y eficiente en memoria.

CRF++ : implementación de código abierto de campos aleatorios condicionales (CRF) para segmentar/etiquetar datos secuenciales y otras tareas de procesamiento de lenguaje natural. [Obsoleto]

CRFsuite : CRFsuite es una implementación de campos aleatorios condicionales (CRF) para etiquetar datos secuenciales. [Obsoleto]

Modelos CRF : diferentes modelos CRF basados en aprendizaje profundo. frog: suite de NLP basada en memoria desarrollada para holandés: etiquetador PoS, lematizador, analizador de dependencias, NER, analizador superficial, analizador morfológico.

MeTA : ModErn Text Analysis es un kit de herramientas de ciencias de datos de C ++ que facilita la extracción de grandes datos de texto, incluida la tokenización de texto, incluidas características semánticas profundas como árboles de análisis, modelos de temas, algoritmos de clasificación, algoritmos gráficos, modelos de lenguaje, algoritmos multiproceso, etc.

MIT Information Extraction Toolkit : herramientas C, C++ y Python para el reconocimiento de entidades nombradas y la extracción de relaciones

ucto : tokenizador basado en expresiones regulares compatible con Unicode para varios idiomas. Herramienta y biblioteca C++. Admite el formato FoLiA.

16. Minería de datos para flujos

StreamDM : útil para extraer flujos de Big Data que admite los siguientes algoritmos

Aprendiz SGD y Perceptrón :

  • ingenuo bayes,
  • clustream,
  • árboles de decisión Hoeffding,
  • Harpillera,
  • Transmitir KM++

Generadores de datos

  • HiperplanoGenerador,
  • Generador de árboles aleatorios,
  • Generador RBF aleatorio,
  • RandomRBFEventsGenerator

17. Estructuras de datos/Gráfica/Algoritmos de programación dinámica

https://github.com/TheAlgorithms/C-Plus-Plus 18. Aprendizaje automático de propósito general

18. Aprendizaje automático de propósito general

Darknet : Darknet es un marco de red neuronal de código abierto escrito en C y CUDA, que admite el cálculo de CPU y GPU.

cONNXr : un tiempo de ejecución ONNX está escrito en C puro (99) sin dependencias enfocadas en pequeños dispositivos integrados. Ejecute la inferencia en sus modelos de aprendizaje automático sin importar con qué marco lo entrene. Fácil de instalar y compila en todas partes, incluso en dispositivos muy antiguos.

BanditLib : una biblioteca Bandit de múltiples brazos simple. [Obsoleto]

CUDA : esta es una implementación rápida de C ++ / CUDA de aprendizaje profundo convolucional

DeepDetect : una API y un servidor de aprendizaje automático escritos en C++ 11. Hace que el aprendizaje automático de última generación sea fácil de trabajar e integrar en las aplicaciones existentes.

Kit de herramientas de aprendizaje automático distribuido (DMTK) : un marco de aprendizaje automático distribuido (servidor de parámetros) de Microsoft. Permite entrenar modelos en grandes conjuntos de datos en varias máquinas. Las herramientas actuales incluidas incluyen: LightLDA y Distributed (Multisense) Word Embedding.

DLib : un conjunto de herramientas de aprendizaje automático diseñado para integrarse fácilmente en otras aplicaciones.

DSSTNE : una biblioteca de software creada por Amazon para entrenar e implementar redes neuronales profundas usando GPU que enfatiza la velocidad y la escala sobre la flexibilidad experimental.

DyNet : una biblioteca de redes neuronales dinámicas que funciona bien con redes que tienen estructuras dinámicas que cambian para cada instancia de entrenamiento. Escrito en C++ con enlaces en Python.

Fido : una biblioteca de aprendizaje automático C ++ altamente modular para electrónica y robótica integradas.

igraph : biblioteca de gráficos de propósito general.

Intel(R) DAAL : una biblioteca de software de alto rendimiento desarrollada por Intel y optimizada para las arquitecturas de Intel. La biblioteca proporciona bloques de construcción algorítmicos para todas las etapas del análisis de datos y permite procesar datos en modo por lotes, en línea y distribuido.

libfm : un enfoque genérico que permite imitar la mayoría de los modelos de factorización mediante ingeniería de características.

MLDB : la base de datos de aprendizaje automático es una base de datos diseñada para el aprendizaje automático. Envíe comandos a través de una API RESTful para almacenar datos, explórelos con SQL, luego entrene modelos de aprendizaje automático y expóngalos como API.

mlpack : una biblioteca escalable de aprendizaje automático de C++.

MXNet : aprendizaje profundo ligero, portátil, flexible, distribuido/móvil con programador de flujo de datos dinámico y consciente de las mutaciones; para Python, R, Julia, Go, Javascript y más.

proNet-core : un marco de incrustación de red de uso general: optimización de representaciones por pares Edición de red.

PyCUDA : interfaz de Python para CUDA

ROOT : un marco de software científico modular. Proporciona todas las funcionalidades necesarias para manejar el procesamiento de big data, el análisis estadístico, la visualización y el almacenamiento.

shark : una biblioteca de aprendizaje automático C++ de código abierto, rápida, modular y rica en funciones.

Shogun : la caja de herramientas de aprendizaje automático de Shogun.

sofia-ml – Suite de algoritmos incrementales rápidos. Stan : un lenguaje de programación probabilístico que implementa la inferencia estadística bayesiana completa con el muestreo hamiltoniano Monte Carlo.

Timbl : un paquete de software/biblioteca C++ que implementa varios algoritmos de aprendizaje basados en memoria, entre los que se encuentran IB1-IG, una implementación de la clasificación de vecinos más cercanos e IGTree, una aproximación de árbol de decisión de IB1-IG. Comúnmente utilizado para PNL.

Vowpal Wabbit (VW) : un sistema de aprendizaje rápido fuera del núcleo. Warp-CTC : una implementación paralela rápida de la clasificación temporal conexionista (CTC), tanto en la CPU como en la GPU.

ThunderSVM : una biblioteca SVM rápida en GPU y CPU.

LKYDeepNN : una biblioteca de red neuronal C ++ 11 de solo encabezado. Baja dependencia, documento chino tradicional nativo.

xLearn : un paquete de aprendizaje automático de alto rendimiento, fácil de usar y escalable, que se puede utilizar para resolver problemas de aprendizaje automático a gran escala. xLearn es especialmente útil para resolver problemas de aprendizaje automático en datos dispersos a gran escala, lo cual es muy común en los servicios de Internet, como la publicidad en línea y los sistemas de recomendación.

Featuretools : una biblioteca para la ingeniería de características automatizada. Sobresale en la transformación de conjuntos de datos transaccionales y relacionales en matrices de características para el aprendizaje automático utilizando "primitivas" de ingeniería de características reutilizables.

skynet : una biblioteca para aprender redes neuronales, tiene una interfaz C, conjunto de red en JSON. Escrito en C++ con enlaces en Python, C++ y C#.

Feast : una tienda de funciones para la gestión, el descubrimiento y el acceso a las funciones de aprendizaje automático. Feast proporciona una vista coherente de los datos de características tanto para el entrenamiento como para el servicio de modelos.

Hopsworks : una plataforma de uso intensivo de datos para IA con la primera tienda de características de código abierto de la industria. Hopsworks Feature Store proporciona un almacén de funciones para entrenamiento y procesamiento por lotes basado en Apache Hive y una base de datos de servicio de funciones, basada en MySQL Cluster, para aplicaciones en línea.

Polyaxon : una plataforma para el aprendizaje automático y el aprendizaje profundo reproducible y escalable.

sara : biblioteca de visión por computadora C++ con implementaciones fáciles de entender y eficientes de algoritmos de visión por computadora. [Licencia pública de Mozilla versión 2.0]

ANNetGPGPU : una biblioteca de redes neuronales artificiales basada en GPU (CUDA). [LGPL]

btsk – Kit de inicio del árbol de comportamiento del juego. [zlib]

Objetos en evolución : una biblioteca de computación evolutiva ANSI-C++ basada en plantillas que lo ayuda a escribir sus propios algoritmos de optimización estocástica increíblemente rápido. [LGPL]

frugally-deep : biblioteca de solo encabezado para usar modelos de Keras en C++. [MIT]

Genann : biblioteca de red neuronal simple en C. [zlib]

MXNet : aprendizaje profundo ligero, portátil, flexible, distribuido/móvil con programador de flujo de datos dinámico y consciente de las mutaciones; para Python, R, Julia, Scala, Go, Javascript y más.

PyTorch : tensores y redes neuronales dinámicas en Python con una fuerte aceleración de GPU.

sitio web Recast/Detour – (3D) Generador de malla de navegación y buscador de caminos, principalmente para juegos. [zlib]

tiny-dnn : un marco de aprendizaje profundo sin dependencias y solo encabezado en C++ 11. [BSD]

Veles : una plataforma distribuida para el desarrollo rápido de aplicaciones de aprendizaje profundo. [Apache]

Kaldi : kit de herramientas para el reconocimiento de voz. [Apache]

19. Visión por computadora

CCV : biblioteca de visión artificial basada en C/en caché/núcleo, una biblioteca moderna de visión artificial.

VLFeat : VLFeat es una biblioteca abierta y portátil de algoritmos de visión por computadora, que tiene la caja de herramientas de Matlab.

DLib : DLib tiene interfaces C++ y Python para la detección de rostros y el entrenamiento de detectores de objetos generales.

EBLearn : Eblearn es una biblioteca de C++ orientada a objetos que implementa varios modelos de aprendizaje automático [Obsoleto]

OpenCV : OpenCV tiene interfaces C++, C, Python, Java y MATLAB y es compatible con Windows, Linux, Android y Mac OS.

VIGRA : VIGRA es una biblioteca genérica de aprendizaje automático y visión artificial C++ multiplataforma para volúmenes de dimensionalidad arbitraria con enlaces de Python.

Openpose : una biblioteca de detección de puntos clave de varias personas en tiempo real para la estimación del cuerpo, la cara, las manos y los pies20. FlashLight de la investigación de Facebook.

20. FlashLight de la investigación de Facebook

flashlight es una biblioteca de aprendizaje automático rápida y flexible escrita íntegramente en C++ por el equipo de Facebook AI Research Speech y los creadores de Torch y Deep Speech.

21. Red neuronal móvil de Alibaba

MNN es un marco de aprendizaje profundo altamente eficiente y liviano. Admite la inferencia y el entrenamiento de modelos de aprendizaje profundo y tiene un rendimiento líder en la industria para la inferencia y el entrenamiento en el dispositivo.

22. Habitat-SIM de Facebook Research

La biblioteca habitat-sim (C++) permite el entrenamiento de agentes de IA incorporados (robots virtuales) en un simulador 3D altamente fotorrealista y eficiente, antes de transferir las habilidades aprendidas a la realidad. Emplea conjuntos de datos estáticos (por ejemplo , ImageNet, COCO, VQA ) con IA donde los agentes actúan en entornos realistas aprendiendo de ellos.

Referencias