Maschinelles Lernen mit C++: Überblick über die wichtigsten Bibliotheken
Obwohl Python zum De-facto-Standard für Forschung und schnelles Prototyping im Bereich des maschinellen Lernens (ML) geworden ist, bleibt C++ eine unverzichtbare Sprache für Produktionssysteme, bei denen Leistung, geringer Speicherverbrauch und Echtzeitfähigkeit entscheidend sind. C++ ermöglicht es, das Maximum aus der Hardware herauszuholen, was besonders wichtig ist, wenn Modelle auf mobilen Geräten, eingebetteten Systemen oder stark ausgelasteten Servern bereitgestellt werden.
In diesem Artikel betrachten wir fünf führende Bibliotheken für maschinelles Lernen in C++, ihre Stärken, typische Anwendungsfälle und geben praktische Codebeispiele. Sie erfahren, welche Bibliothek Sie für Klassifikation, Regression, Clustering, die Arbeit mit neuronalen Netzen oder Signalverarbeitung wählen sollten.
1. TensorFlow C++ API – Die Kraft des Deep Learning
TensorFlow ist eines der beliebtesten Frameworks für Deep Learning. Seine C++-API ermöglicht das Laden von vortrainierten Modellen (z. B. aus Python) und die Durchführung von Inferenz mit maximaler Geschwindigkeit. Dies ist die ideale Wahl für eingebettete Systeme (Raspberry Pi, Jetson Nano, Android) und Produktionsserver.
Hauptfunktionen:
- Arbeit mit gespeicherten Berechnungsgraphen (SavedModel, Frozen Graph).
- Unterstützung von GPUs über CUDA und cuDNN.
- Optimierung des Modells für ein bestimmtes Gerät (XLA, Quantization).
Beispiel für das Laden und Ausführen eines Modells (Inferenz):
#include <tensorflow/core/public/session.h>#include <tensorflow/core/platform/env.h>
using namespace tensorflow;
int main() { // Sitzung erstellen Session* session; NewSession(SessionOptions(), &session);
// Graphen aus Datei laden GraphDef graph_def; Status status = ReadBinaryProto(Env::Default(), "model.pb", &graph_def); if (!status.ok()) { /* Fehlerbehandlung */ }
// Graphen zur Sitzung hinzufügen session->Create(graph_def);
// Eingabedaten vorbereiten (Tensor) Tensor input_tensor(DT_FLOAT, TensorShape({1, 224, 224, 3})); auto input_map = input_tensor.tensor<float, 4>(); // ... Tensor mit Daten füllen ...
// Inferenz durchführen std::vector<Tensor> outputs; session->Run({{"input_tensor", input_tensor}}, {"output_tensor"}, {}, &outputs);
// Ergebnis verwenden auto result = outputs[0].tensor<float, 2>(); std::cout << "Prediction: " << result(0, 0) << std::endl;
session->Close(); return 0;}2. Dlib – Universelles Werkzeug für ML und Computer Vision
Dlib ist eine Allzweckbibliothek, die sowohl klassische Algorithmen des maschinellen Lernens (SVM, Entscheidungsbäume, K-Means) als auch moderne tiefe neuronale Netze umfasst. Sie ist besonders stark in Aufgaben der Computer Vision: Gesichtserkennung, Objektverfolgung, Gesichtserkennung (FaceNet).
Wesentliche Merkmale:
- Einfache Integration: Header-only für die meisten Funktionen.
- Integrierte Unterstützung für Multithreading (thread_pool).
- Fertige Hilfsprogramme für Bildverarbeitung und Matrixoperationen.
Beispiel für das Training eines SVM-Klassifikators:
#include <dlib/svm.h>#include <dlib/rand.h>
using namespace dlib;
int main() { // Kernel-Typ: Radiale Basisfunktion (RBF) typedef radial_basis_kernel<sample_type> kernel_type;
// Klassifikator und Trainer erstellen svm_c_trainer<kernel_type> trainer; trainer.set_kernel(kernel_type(0.1));
// Trainingsdaten std::vector<sample_type> samples; std::vector<double> labels; // ... samples und labels füllen ...
// Training decision_function<kernel_type> df = trainer.train(samples, labels);
// Neue Stichprobe testen Auch in der Bibliothek
Arbeiten mit Daten in Java: Überblick über Bibliotheken und Werkzeuge
Datenbankmigrationen in C# (.NET): Entity Framework, FluentMigrator und andere Ansätze
DataStore für Kotlin: Komplettes Tutorial mit Beispielen
SMS-Versand mit Swift (iOS/macOS): API der MessageUI-Bibliothek
Rate Limiting in Node.js: Vollständiger Leitfaden zum Schutz von APIs und Lastmanagement