Top 3 Bibliotheken für maschinelles Lernen in C++, die Sie ausprobieren sollten
Veröffentlicht: 2020-12-10Machine Learning umgibt uns heute überall in der einen oder anderen Form. Diese Teilmenge der künstlichen Intelligenz hat vielfältige Anwendungen in allen Parallelen der Branche gefunden, und das zu Recht. Obwohl maschinelles Lernen ein aufstrebendes Gebiet ist, hat es eine Reihe von Möglichkeiten eröffnet, die es zu erforschen gilt.
Nun stellt sich die Frage, welche Programmiersprache für Machine-Learning-Projekte verwendet werden soll.
Python und C++ sind zwei der beliebtesten Programmiersprachen. Beide Sprachen rühmen sich einer aktiven Community, dedizierter Tool-Unterstützung, eines umfangreichen Ökosystems von Bibliotheken und einer lobenswerten Laufzeitleistung. Der Schwerpunkt des heutigen Beitrags liegt jedoch auf maschinellem Lernen in C++.
Inhaltsverzeichnis
Warum C++ für maschinelles Lernen?
Es ist eine allgemein anerkannte Tatsache, dass maschinelles Lernen eine hohe CPU-Leistung erfordert, und genau das garantiert C++. Wenn es um Geschwindigkeit und Leistung geht, lässt C++ Python, Java und sogar C# hinter sich. Ein weiterer großer Vorteil der Verwendung von C++ für maschinelles Lernen ist die Zeigerunterstützung, eine Funktion, die in vielen gängigen Programmiersprachen nicht verfügbar ist.
Für die erfolgreiche Implementierung von Machine Learning in C++ ist es in erster Linie wichtig, sich mit C++-Bibliotheken vertraut zu machen. Zum Glück hat C++ einige großartige Bibliotheken für maschinelles Lernen, darunter Shark, MLPack und GRT (Gesture Recognition Toolkit).
Lassen Sie uns nun in die Diskussion über Bibliotheken für maschinelles Lernen in C++ eintauchen.

Bibliotheken für maschinelles Lernen in C++
1. Hai
Shark ist eine modulare Open-Source-Bibliothek in C++. Es ist die perfekte Bibliothek für maschinelles Lernen, da es umfassende Unterstützung für überwachte Lernalgorithmen wie lineare Regression, k-Means, neuronale Netze und Clustering bietet, um nur einige zu nennen.
Shark enthält auch zahlreiche Methoden zur linearen und nichtlinearen Optimierung, Kernel-basierte Lernalgorithmen, numerische Optimierung und eine Vielzahl anderer ML-Techniken. Es ist das ideale Werkzeug sowohl für die Forschung als auch für den Aufbau realer Anwendungen. Shark verfügt über eine hervorragende Dokumentation und ist mit Linux, Windows und macOS kompatibel.
Wie installiere ich Shark?
Um Shark zu installieren, müssen Sie die Quellpakete von der offiziellen Download-Seite herunterladen . Danach müssen Sie die Bibliothek erstellen, indem Sie den folgenden Code schreiben:
mkdir Shark/build/
CD Shark/Build
cm machen ../
machen
Sie müssen wissen, dass Shark zwei Abhängigkeiten hat – Boost und CMake . Während unter Linux und Windows normalerweise ATLAS verwendet wird, ist Accelerate unter macOS die Standardbibliothek für lineare Algebra. In macOS können Sie MacPorts verwenden, um die erforderlichen Pakete wie folgt zu erhalten:
sudo port install boost cmake
Unter Ubuntu müssen Sie jedoch die erforderlichen Pakete mit der folgenden Anweisung installieren:
sudo apt-get install cmake cmake-curses-gui libatlas-base-dev libboost-all-dev
Hier sind die Schritte zur Installation von Shark:
- Laden Sie zunächst die Quellpakete von der Seite d ownloads herunter und entpacken Sie sie.
- Starten Sie die CMake-GUI
- Wählen Sie „Wo ist der Quellcode“, um den Pfad zum entpackten Shark-Speicherort festzulegen.
- Wählen Sie „Wo soll das Verzeichnis erstellt werden“, um den Pfad festzulegen, in dem Sie die Visual Studio-Projektdateien speichern möchten.
- Wählen Sie die Option „Eintrag hinzufügen“. Fügen Sie nun einen Eintrag BOOST_ROOT vom Typ PATH hinzu und legen Sie ihn in Ihrem Boost-Installationsverzeichnis fest.
- Fügen Sie erneut einen Eintrag BOOST_LIBRARYDIR vom Typ PATH hinzu und legen Sie ihn auf Ihr Boost-Bibliotheksverzeichnis fest.
- Wählen Sie abschließend den passenden Visual Studio-Compiler aus und doppelklicken Sie auf die Option „Konfigurieren“, gefolgt von der Option „Generieren“.
2. ml-Packung
mlpack ist eine C++-Bibliothek, die explizit auf Leistung ausgelegt ist. Es verspricht, schnelle und erweiterbare Implementierungen wegweisender ML-Algorithmen anzubieten. Der einzigartige Aspekt dieser C++-Bibliothek besteht darin, dass sie die ML-Algorithmen als einfache Befehlszeilenprogramme, Python-Bindungen, Julia-Bindungen und C++-Klassen bereitstellt, die Sie alle in größere ML-Lösungen integrieren können.
Wie installiere ich mlpack?
Der Installationsprozess von MLPack variiert von Plattform zu Plattform.
Für Python können Sie das Quellpaket wie folgt über pip oder conda abrufen:
pip mlpack installieren
conda install -c conda-forge mlpack
Weitere Einzelheiten finden Sie in der Schnellstartanleitung mlpack in Python .
Für Julia können Sie die Quellen wie folgt über Pkg abrufen:
Import-Paket;
Pkg.add("mlpack")

Für Ubuntu, Debian, Fedora und Red Hat können Sie mlpack mit einem Paketmanager installieren. Die mlpack-Befehlszeilen-Schnellstartanleitung ist ein guter Ausgangspunkt. Sie können es auch aus dem Quellcode erstellen, indem Sie dem Linux-Build-Tutorial folgen .
Für Windows können Sie vorgefertigte Binärdateien herunterladen – Windows 64 Bit – MSI Installer und Windows 64 Bit – ZIP . Sie können es auch mit einem Paketmanager wie vcpkg installieren oder aus dem Quellcode erstellen, indem Sie dem Windows-Build-Tutorial folgen .
Bei macOS können Sie die Bibliothek wie folgt über Homebrew installieren:
brauen mlpack installieren
Lesen Sie: Höchstbezahlte Jobs für maschinelles Lernen
3. GRT (Gestenerkennungs-Toolkit)
GRT oder Gesture Recognition Toolkit ist eine plattformübergreifende Open-Source-C++-Bibliothek. Es wurde speziell für die Echtzeit-Gestenerkennung entwickelt. Es enthält eine umfassende C++-API, die durch eine übersichtliche und einfach zu bedienende GUI (Graphical User Interface) weiter gefestigt wird.
GRT ist nicht nur einsteigerfreundlich, sondern lässt sich auch sehr einfach in bestehende C++-Projekte integrieren. Es ist mit jedem Sensor/Dateneingang kompatibel und Sie können es mit Ihren einzigartigen Gesten trainieren. Darüber hinaus kann sich GRT bei Bedarf an Ihre benutzerdefinierten Verarbeitungs- oder Merkmalsextraktionsalgorithmen anpassen.
Wie installiere ich GRT?
Als erstes müssen Sie das GRT-Paket herunterladen . Danach müssen Sie den GRT-Ordner im Hauptordner des Gestenerkennungs-Toolkits suchen und den GRT-Ordner (einschließlich aller Unterordner) zum gewünschten Projekt hinzufügen.
Sie können mit der Verwendung des GRT beginnen, indem Sie den vollständigen Code, der im GRT-Ordner gespeichert ist, zu Ihrem C++-Projekt hinzufügen. Falls Sie IDEs wie VisualStudio oder XCode verwenden, können Sie die GRT-Ordnerdateien zu Ihrem Projekt hinzufügen, indem Sie diesem Pfad folgen – „ Datei -> Dateien zum Projekt hinzufügen “. Sie können auch den GRT-Ordner (aus dem Finder oder Windows Explorer) in die IDE ziehen, um alle Dateien aus dem GRT-Ordner zu Ihrem Projekt hinzuzufügen.
Sobald Sie den im GRT-Ordner enthaltenen Code zu Ihrem Projekt hinzugefügt haben, können Sie alle GRT-Funktionen/Klassen verwenden. Alles, was Sie tun müssen, ist, die folgenden zwei Codezeilen am Anfang der Header-Datei in dem Projekt hinzuzufügen, in dem Sie den GRT-Code verwenden möchten:
#include „GRT/GRT.h“
int main (int argc, const char * argv[])
{
//Der Hauptcode für Ihr Projekt…
}

In diesem Code fügt die erste Zeile dem Projekt die GRT-Hauptheaderdatei (GRT.h) hinzu. Die Datei GRT.h enthält alle Header-Dateien des GRT-Moduls, sodass Sie keine weiteren GRT-Header-Dateien manuell eingeben müssen. Die zweite Zeile deklariert jedoch, dass der GRT-Namespace verwendet wird. Dadurch entfällt die Notwendigkeit, GRT:: WhatEverClass jedes Mal zu schreiben, wenn Sie eine GRT-Klasse verwenden möchten – Sie können WhatEverClass schreiben und sind damit fertig.
Denken Sie jedoch daran, dass Sie den physischen Pfad angeben müssen, in dem Sie den GRT-Ordner auf Ihrer Festplatte gespeichert haben, basierend auf der von Ihnen verwendeten IDE.
Lesen Sie auch: Karriere im maschinellen Lernen
Fazit
Diese drei C++-Bibliotheken sind perfekt, um fast alle Ihre ML-Anforderungen zu erfüllen. Der Schlüssel zur Beherrschung des maschinellen Lernens in C++ besteht zunächst darin, diese Bibliotheken zu lernen, ihre Besonderheiten und Funktionen zu verstehen und sie dann für spezifische ML-Anforderungen zu implementieren.
Wenn Sie mehr über maschinelles Lernen erfahren möchten, sehen Sie sich das PG-Diplom in maschinellem Lernen und KI von IIIT-B & upGrad an, das für Berufstätige konzipiert ist und mehr als 450 Stunden strenge Schulungen, mehr als 30 Fallstudien und Aufgaben bietet, IIIT- B-Alumni-Status, mehr als 5 praktische, praktische Abschlussprojekte und Jobunterstützung bei Top-Unternehmen.
Was ist besser für maschinelles Lernen – C++ oder Python?
C++ und Python sind zwei der am weitesten verbreiteten Programmiersprachen. Abhängig von der jeweiligen Aufgabe muss man jedoch auswählen, welche verwendet werden soll. Wenn es um Spieleerstellung und Lernsysteme geht, ist C++ die bevorzugte Sprache. Wenn es jedoch um maschinelles Lernen geht, ist Python die beste Option. Es ist auch praktisch für Aufgaben, die Datensysteme betreffen. Da die Syntax von Python außerdem einfach zu verstehen ist, wird sie Anfängern empfohlen. Ein weiteres Unterscheidungsmerkmal von Python ist, dass es sich um eine interpretierte Sprache handelt, was bedeutet, dass Python-Code zur Laufzeit nicht in maschinenlesbares übersetzt wird.
Was sind einige der Herausforderungen beim maschinellen Lernen?
Da Daten die wichtigste Eingabe beim maschinellen Lernen sind, ist eines der Probleme, mit denen Fachleute für maschinelles Lernen konfrontiert sind, der Mangel an qualitativ hochwertigen Daten. Eine Unteranpassung kann auch auftreten, wenn die Daten nicht gut zu den Eingabe- und Ausgabevariablen passen. Daten sind lebenswichtig, aber zu viele Daten können zu einer Überanpassung führen, was zu einer schlechten Leistung des maschinellen Lernalgorithmus führt. Mit maschinellen Lernmodellen ist es einfach, genaue Ergebnisse zu finden, aber der Zeitaufwand ist enorm, was eine weitere Schwierigkeit darstellt.
Wie unterscheiden sich statische und dynamische Bibliotheken voneinander?
Hinsichtlich der Größe unterscheiden sich statische und dynamische Bibliotheken voneinander. Da nur eine Kopie einer dynamischen Bibliothek aufbewahrt oder im Speicher gespeichert wird, sind dynamische Bibliotheken wesentlich kleiner als statische Bibliotheken. Die ausführbare Datei enthält eine statische Bibliothek, die erstellt oder verknüpft wurde. Es ist eine Komponente Ihrer Anwendung und kann von niemand anderem verwendet werden. Während die dynamische Bibliothek unabhängig erstellt, gelinkt und installiert wird, kann auf sie von jedem Programm zugegriffen werden. Dadurch wird die Programmgröße reduziert und gleichzeitig Code ausgeblendet.