Le 3 migliori librerie di machine learning in C++ che dovresti mettere in pratica

Pubblicato: 2020-12-10

Oggi, ovunque guardiamo, il Machine Learning è intorno a noi in una forma o nell'altra. Questo sottoinsieme dell'intelligenza artificiale ha trovato diverse applicazioni in tutti i paralleli del settore, e giustamente. Anche se l'apprendimento automatico è un campo emergente, ha aperto una serie di possibilità da esplorare.

Ora, la domanda è: quale linguaggio di programmazione utilizzare per i progetti di Machine Learning?

Python e C++ sono due dei linguaggi di programmazione più popolari. Entrambi questi linguaggi vantano una comunità attiva, supporto per strumenti dedicati, un vasto ecosistema di librerie e prestazioni di runtime lodevoli. Tuttavia, il focus del post di oggi sarà Machine Learning in C++.

Sommario

Perché C++ per l'apprendimento automatico?

È risaputo che il Machine Learning richiede prestazioni della CPU per impieghi gravosi, e questo è esattamente ciò che garantisce il C++. Quando si tratta di velocità e prestazioni, C++ si lascia alle spalle Python, Java e persino C#. Un altro grande vantaggio dell'utilizzo di C++ per Machine Learning è che ha il supporto per i puntatori, una funzionalità non disponibile in molti dei linguaggi di programmazione più diffusi.

Per una corretta implementazione di Machine Learning in C++, la cosa più importante da fare è familiarizzare con le librerie C++. Per fortuna, C++ ha alcune ottime librerie per Machine Learning, tra cui Shark, MLPack e GRT (Gesture Recognition Toolkit).

Entriamo ora nella discussione delle librerie di Machine Learning in C++.

Librerie di apprendimento automatico in C++

1. Squalo

Shark è una libreria modulare open source in C++. È la libreria perfetta per Machine Learning poiché ha un ampio supporto per algoritmi di apprendimento supervisionato come regressione lineare, k-mean, reti neurali e clustering, solo per citarne alcuni.

Shark include anche numerosi metodi per l'ottimizzazione lineare e non lineare, algoritmi di apprendimento basati sul kernel, ottimizzazione numerica e una serie di altre tecniche di ML. È lo strumento ideale sia per la ricerca che per la creazione di applicazioni nel mondo reale. Shark ha un'eccellente documentazione ed è compatibile con Linux, Windows e macOS.

Come installare Shark?

Per installare Shark, devi ottenere i pacchetti sorgente dalla pagina di download ufficiale . Successivamente, è necessario creare la libreria scrivendo il codice seguente:

mkdir Shark/build/

cd Shark/build

fai ../

Fare

Devi sapere che Shark ha due dipendenze: Boost e CMake . Mentre su Linux e Windows, di solito viene utilizzato ATLAS, su macOS, Accelerate è la libreria di algebra lineare predefinita. In macOS, puoi utilizzare MacPorts per ottenere i pacchetti necessari, in questo modo:

sudo port install boost cmake

Tuttavia, in Ubuntu, devi installare i pacchetti richiesti usando la seguente istruzione:

sudo apt-get install cmake cmake-curses-gui libatlas-base-dev libboost-all-dev

Ecco i passaggi per l'installazione di Shark:

  • Per prima cosa, scarica i pacchetti sorgente dalla pagina d ownloads e scompattali.
  • Avvia la GUI di CMake
  • Seleziona "Dov'è il codice sorgente" per impostare il percorso della posizione di Shark non imballata.
  • Seleziona "Dove creare la directory" per impostare il percorso in cui desideri archiviare i file di progetto di Visual Studio.
  • Scegli l'opzione "Aggiungi voce". Ora aggiungi una voce BOOST_ROOT di tipo PATH e impostala nella directory di installazione boost.
  • Ancora una volta, aggiungi una voce BOOST_LIBRARYDIR di tipo PATH e impostala nella directory della tua libreria boost.
  • Infine, scegli il compilatore di Visual Studio apt e fai doppio clic sull'opzione "Configura", seguita dall'opzione "Genera".

2. confezione da ml

mlpack è una libreria C++ progettata esplicitamente per le prestazioni. Promette di offrire implementazioni rapide ed estensibili di algoritmi ML all'avanguardia. L'aspetto unico di questa libreria C++ è che fornisce gli algoritmi ML come semplici programmi da riga di comando, collegamenti Python, collegamenti Julia e classi C++, tutti elementi che è possibile integrare in soluzioni ML su larga scala.

Come installare mlpack?

Il processo di installazione di MLPack varia da piattaforma a piattaforma.

Per Python, puoi ottenere il pacchetto sorgente tramite pip o conda, in questo modo:

pip install mlpack

conda install -c conda-forge mlpack

Puoi fare riferimento a mlpack nella guida di avvio rapido di Python per maggiori dettagli.

Per Julia, puoi ottenere i sorgenti tramite Pkg, come segue:

importare Pkg;

Pkg.add(“mlpack”)

Per Ubuntu, Debian, Fedora e Red Hat, puoi installare mlpack usando un gestore di pacchetti. La guida rapida alla riga di comando di mlpack è un buon punto di partenza. Puoi anche compilarlo dal sorgente seguendo il tutorial di compilazione di Linux .

Per Windows, puoi scaricare binari predefiniti – Windows 64 bit – MSI Installer e Windows 64 bit – ZIP . Puoi anche installarlo utilizzando un gestore di pacchetti come vcpkg o compilarlo dal sorgente seguendo il tutorial di compilazione di Windows .

Venendo su macOS, puoi installare la libreria tramite homebrew, in questo modo:

brew install mlpack

Leggi: Lavori di apprendimento automatico più pagati

3. GRT (Kit di strumenti per il riconoscimento dei gesti)

GRT o Gesture Recognition Toolkit è una libreria C++ open source e multipiattaforma. È appositamente progettato per il riconoscimento dei gesti in tempo reale. Include un'API C++ completa che è ulteriormente rafforzata da una GUI (Graphical User Interface) ordinata e facile da usare.

GRT non è solo adatto ai principianti, ma è anche estremamente facile da integrare nei progetti C++ esistenti. È compatibile con qualsiasi sensore/input di dati e puoi allenarlo con i tuoi gesti unici. Inoltre, GRT può adattarsi ai tuoi algoritmi di elaborazione o estrazione di funzionalità personalizzati come e quando necessario.

Come installare GRT?

La prima cosa che devi fare è scaricare il pacchetto GRT. Successivamente, è necessario individuare la cartella GRT nella cartella principale del riconoscimento dei gesti-toolkit e aggiungere la cartella GRT (incluse tutte le sottocartelle) al progetto desiderato.

Puoi iniziare a utilizzare GRT aggiungendo il codice completo archiviato nella cartella GRT al tuo progetto C++. Nel caso in cui utilizzi IDE come VisualStudio o XCode, puoi aggiungere i file della cartella GRT al tuo progetto seguendo questo percorso: " File -> Aggiungi file al progetto ". Puoi anche trascinare la cartella GRT (da Finder o Esplora risorse) nell'IDE per aggiungere tutti i file dalla cartella GRT al tuo progetto.

Dopo aver aggiunto il codice contenuto nella cartella GRT al tuo progetto, puoi utilizzare tutte le funzioni/classi GRT. Tutto quello che devi fare è aggiungere le seguenti due righe di codice nella parte superiore del file di intestazione nel progetto in cui desideri utilizzare il codice GRT:

#includi "GRT/GRT.h"

int main (int argc, const char * argv[])

{

//Il codice principale per il tuo progetto...

}

In questo codice, la prima riga aggiunge il file di intestazione GRT principale (GRT.h) al progetto. Il file GRT.h contiene tutti i file di intestazione del modulo GRT e, quindi, non è necessario immettere manualmente altri file di intestazione GRT. Tuttavia, la seconda riga dichiara che viene utilizzato lo spazio dei nomi GRT. Ciò elimina la necessità di scrivere GRT:: WhatEverClass ogni volta che si desidera utilizzare una classe GRT: è possibile scrivere WhatEverClass e farla finita.

Tuttavia, ricorda che devi specificare il percorso fisico in cui hai archiviato la cartella GRT sul tuo disco rigido, in base all'IDE che utilizzi.

Leggi anche: Carriera nell'apprendimento automatico

Conclusione

Queste tre librerie C++ sono perfette per gestire quasi tutte le tue esigenze di ML. La chiave per padroneggiare Machine Learning in C++ è prima di tutto apprendere queste librerie, comprenderne le specialità e le funzioni e quindi implementarle in base a requisiti ML specifici.

Se sei interessato a saperne di più sull'apprendimento automatico, dai un'occhiata al Diploma PG di IIIT-B e upGrad in Machine Learning e AI, progettato per i professionisti che lavorano e offre oltre 450 ore di formazione rigorosa, oltre 30 casi di studio e incarichi, IIIT- B Status di Alumni, oltre 5 progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Quale è meglio per l'apprendimento automatico: C++ o Python?

C++ e Python sono due dei linguaggi di programmazione più utilizzati. Tuttavia, a seconda dell'attività da svolgere, è necessario scegliere quale utilizzare. Quando si tratta di creare giochi e sistemi di apprendimento, C++ è il linguaggio preferito. Tuttavia, quando si tratta di machine learning, Python è l'opzione migliore. È anche utile per le attività che coinvolgono i sistemi di dati. Inoltre, poiché la sintassi di Python è semplice da comprendere, è consigliata ai principianti. Un altro aspetto distintivo di Python è che è un linguaggio interpretato, il che significa che il codice Python non è tradotto in leggibile dalla macchina in fase di esecuzione.

Quali sono alcune delle sfide dell'apprendimento automatico?

Poiché i dati sono l'input più cruciale nell'apprendimento automatico, uno dei problemi che i professionisti dell'apprendimento automatico devono affrontare è la mancanza di dati di alta qualità. L'underfitting può verificarsi anche se i dati non si adattano bene alle variabili di input e di output. I dati sono vitali, ma troppi dati possono portare a un overfitting, con conseguenti scarse prestazioni dell'algoritmo di apprendimento automatico. Trovare risultati accurati è semplice con i modelli di machine learning, ma il tempo richiesto è enorme, che è un'altra difficoltà.

In che modo le librerie statiche e dinamiche sono diverse l'una dall'altra?

In termini di dimensioni, le librerie statiche e dinamiche differiscono l'una dall'altra. Poiché solo una copia di una libreria dinamica viene conservata o archiviata in memoria, le librerie dinamiche sono di dimensioni sostanzialmente inferiori rispetto alle librerie statiche. L'eseguibile contiene una libreria statica che è stata compilata o collegata. È un componente della tua applicazione e nessun altro può usarlo. Sebbene la libreria dinamica sia creata, collegata e installata in modo indipendente, è possibile accedervi da qualsiasi programma. Ciò riduce le dimensioni del programma nascondendo anche il codice.