Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 6 Min.

Deep Learning in .NET – TensorFlow.NET und TorchSharp

Mit modernen KI-Frameworks lassen sich Deep-Learning-Modelle direkt in C# entwickeln.
© EMGenie

Der Artikel „Effizienter Brückenschlag“ aus der dotnetpro-Ausgabe 2/2026 [1] hat bereits im Überblick dargestellt, wie KI-Modelle und Python-Code in .NET-Anwendungen integriert werden können. In diesem Beitrag befassen wir uns vertieft mit Deep Learning, das klassische Machine-Learning-Ansätze um leistungsfähige neuronale Netze erweitert, welche besonders bei Bild-, Sprach- und Textverarbeitung überzeugen. Während diese Technologien lange eng mit Python verknüpft waren, stehen inzwischen leistungsfähige .NET-Bindings zur Verfügung. Mit TensorFlow.NET und TorchSharp lassen sich moderne Deep-Learning-Modelle direkt in C# entwickeln.

Während klassische Machine-Learning-Verfahren häufig auf statistischen Modellen und vergleichsweise einfachen Feature-Transformationen basieren, geht Deep Learning einen Schritt weiter. Hier kommen künstliche neuronale Netze mit vielen Schichten (Deep Neural Networks) zum Einsatz, die in der Lage sind, komplexe Muster direkt aus großen Datenmengen zu lernen. Besonders in Bereichen wie Bildverarbeitung, Sprachverarbeitung oder bei generativen KI-Systemen ist Deep Learning heute der dominierende Ansatz. Im Unterschied zu klassischen ML-Modellen entfällt die manuelle Feature-Extraktion, da das Modell relevante Merkmale selbstständig aus den Rohdaten lernt.

Im Kontext von .NET stellt sich die Frage, wie sich diese Modelle integrieren lassen. In [1] wurden bereits verschiedene Ansätze beleuchtet: die direkte Nutzung von Python über Python.NET sowie der Austausch trainierter Modelle über ONNX. Beide Strategien bleiben auch im Deep-Learning-Kontext relevant, stoßen jedoch bei komplexen Modellen oder spezifischen Trainingsanforderungen teilweise an Grenzen – etwa hinsichtlich Performance, Flexibilität oder Wartbarkeit.

Mit TensorFlow.NET und TorchSharp stehen zwei leistungsfähige Bibliotheken zur Verfügung, die die Funktionalität von TensorFlow beziehungsweise PyTorch in die .NET-Welt übertragen. Dadurch können Entwickler neuronale Netze direkt in C# definieren, trainieren und ausführen, ohne zwingend auf Python angewiesen zu sein. Gleichzeitig bleibt die Nähe zu den Original-Frameworks erhalten, sodass bestehende Konzepte, Modelle und Workflows weitgehend übernommen werden können.

TensorFlow.NET – Deep Learning mit TensorFlow in C#

Mit TensorFlow.NET werden große Teile des TensorFlow-API in C# nutzbar gemacht. Intern werden die TensorFlow-Operationen weiterhin in nativen Bibliotheken ausgeführt, während C# als Steuerungsschicht dient. Das bedeutet: Entwickler definieren Modelle, Trainingslogik und Datenflüsse in C#, während die eigentliche Berechnung (zum Beispiel Matrixmultiplikationen auf GPU/CPU) in optimiertem nativem Code erfolgt. Dadurch bleibt die Performance auf einem vergleichbaren Niveau wie in Python-basierten Lösungen. Ein zentraler Bestandteil ist – wie in TensorFlow üblich – die Arbeit mit Tensors und Computational Graphs. Modelle können entweder auf niedriger Ebene (Operationen und Graphen) oder über höhere Abstraktionen wie Keras definiert werden.

Die Integration in .NET erfolgt über NuGet-Pakete:

dotnet add package TensorFlow.NET
dotnet add package SciSharp.TensorFlow.Redist

Das Paket SciSharp.TensorFlow.Redist enthält die nativen TensorFlow-Bibliotheken, die zur Ausführung notwendig sind.

Im folgenden Beispiel erstellen wir ein einfaches neuronales Netz zur binären Klassifikation. Ziel ist es, anhand numerischer Eingabewerte eine Entscheidung (0 oder 1) zu treffen.

Hinweis: Das XOR-Beispiel ist eine stark vereinfachte Mini-Version eines echten Problems. Beim XOR hängen die richtigen Ausgaben nicht „einfach“ von den Eingaben ab – es gibt keine gerade Linie, die die Klassen sauber trennt. Genau das passiert auch in der Realität: Viele Daten haben komplexe, nichtlineare Zusammenhänge, die man nicht mit einfachen Regeln beschreiben kann. Das neuronale Netz lernt beim XOR, diese komplexe Struktur zu erkennen. Und genau das gleiche Prinzip wird in echten Anwendungen genutzt – nur mit viel mehr Daten und deutlich komplexeren Mustern.

 

using System;
using Tensorflow;
using static Tensorflow.Binding;
using Tensorflow.Keras;
using Tensorflow.Keras.Layers;
using Tensorflow.NumPy;
class Program
{
    static void Main(string[] args)
    {
        // TensorFlow initialisieren
        tf.enable_eager_execution();
        // Trainingsdaten (vereinfachtes Beispiel)
        var x_train = np.array(new float[,]
        {
            {0, 0},
            {0, 1},
            {1, 0},
            {1, 1}
        });
        var y_train = np.array(new float[]
        {
            0, 1, 1, 0   // XOR-Problem
        });
        // Modell definieren (Keras API)
        var model = keras.Sequential();
        model.add(new Dense(8, activation: "relu", input_shape: 2));
        model.add(new Dense(4, activation: "relu"));
        model.add(new Dense(1, activation: "sigmoid"));
        // Kompilieren des Modells
        model.compile(
            optimizer: keras.optimizers.Adam(),
            loss: "binary_crossentropy",
            metrics: new[] { "accuracy" }
        );
        // Training
        model.fit(x_train, y_train, epochs: 200, verbose: 1);
        // Vorhersage
        var prediction = model.predict(x_train);
        Console.WriteLine("Vorhersagen:");
        Console.WriteLine(prediction);
    }
}

 

Das Beispiel zeigt einen Deep-Learning-Workflow:

  • Datenbereitstellung: Trainingsdaten werden als NumPy-Arrays (über Tensorflow.NumPy) definiert.
  • Modellaufbau: Ein sequenzielles Modell mit mehreren Dense-Schichten wird erstellt.
  • Kompilierung: Verlustfunktion, Optimierer und Metriken werden festgelegt.
  • Training: Das Modell wird über mehrere Epochen trainiert.
  • Inferenz: Nach dem Training werden Vorhersagen berechnet.

TorchSharp – PyTorch für .NET

Neben TensorFlow hat sich PyTorch in den letzten Jahren als eines der führenden Frameworks für Deep Learning etabliert. Es zeichnet sich insbesondere durch seine flexible, imperative Programmierweise aus, die es erlaubt, Modelle dynamisch zur Laufzeit zu definieren. TorchSharp ermöglicht den Zugriff auf die PyTorch-Engine direkt aus C#. Zentrale Konzepte in TorchSharp sind:

  • Tensoren als grundlegende Datenstruktur,
  • Module zur Definition von Modellen,
  • Optimierer zur Anpassung der Gewichte,
  • Loss-Funktionen zur Bewertung der Modellgüte.

Die Integration erfolgt ebenfalls über NuGet:

 

dotnet add package TorchSharp

 

Es folgt ein Beispiel für ein einfaches neuronales Netz: konkret wieder ein XOR-Problem, analog zum TensorFlow.NET-Beispiel, jedoch im TorchSharp-Stil:

 

using System;
using TorchSharp;
using static TorchSharp.torch;
using static TorchSharp.torch.nn;
class Program
{
    static void Main(string[] args)
    {
        // Gerät wählen (CPU)
        var device = CPU;
        // Trainingsdaten (XOR)
        var x = tensor(new float[,] {
            {0, 0},
            {0, 1},
            {1, 0},
            {1, 1}
        }).to(device);
        var y = tensor(new float[,] {
            {0},
            {1},
            {1},
            {0}
        }).to(device);
        // Modell definieren
        var model = Sequential(
            ("layer1", Linear(2, 8)),
            ("relu1", ReLU()),
            ("layer2", Linear(8, 4)),
            ("relu2", ReLU()),
            ("output", Linear(4, 1)),
            ("sigmoid", Sigmoid())
        ).to(device);
        // Verlustfunktion und Optimierer
        var lossFn = BCELoss();
        var optimizer = optim.Adam(model.parameters(), lr: 0.01);
        // Training
        for (int epoch = 0; epoch < 2000; epoch++)
        {
            model.train();
            var prediction = model.forward(x);
            var loss = lossFn.call(prediction, y);
            optimizer.zero_grad();
            loss.backward();
            optimizer.step();
            if (epoch % 200 == 0)
            {
                Console.WriteLine($"Epoch {epoch}, Loss: {loss.ToSingle()}");
            }
        }
        // Inferenz
        model.eval();
        var output = model.forward(x);
        Console.WriteLine("Vorhersagen:");
        Console.WriteLine(output);
    }
}

 

Das Beispiel folgt dem typischen PyTorch-/TorchSharp-Workflow:

  • Daten als Tensoren: Eingaben und Zielwerte werden direkt als Tensoren definiert.
  • Modellstruktur: Das Netzwerk wird als Sequenz von Layern aufgebaut.
  • Training Loop: Anders als bei Keras erfolgt das Training explizit über eine Schleife, inklusive Forward Pass, Loss-Berechnung, Backpropagation und Optimierung.
  • Inferenz: Nach dem Training werden Vorhersagen berechnet.
TensorFlow.NET und TorchSharp im Vergleich (Bild 1)

TensorFlow.NET und TorchSharp im Vergleich (Bild 1)

© Autor

Fazit

TensorFlow.NET orientiert sich am Keras-API und bietet einen hohen Abstraktionsgrad: Modelle lassen sich deklarativ definieren, Trainingsprozesse sind weitgehend gekapselt. Das erleichtert den Einstieg und eignet sich besonders für standardisierte, produktionsnahe Szenarien. TorchSharp hingegen folgt dem PyTorch-Paradigma und setzt auf eine imperative Programmierung. Trainingsschleifen werden explizit implementiert, was eine größere Kontrolle ermöglicht und sich insbesondere für komplexe oder experimentelle Modelle eignet (Bild 1).

 

Neueste Beiträge

SQLite als Dokumentenspeicher: Kann das gut gehen? - SQLite für .NET-Entwickler, Teil 5
Die Embedded SQL-Datenbank SQLite kann auch als objektorientierte Datenbank beziehungsweise Dokumentenspeicher genutzt werden – nach Konzepten also, wie sie NoSQL-Datenbanken wie MongoDB einsetzen.
6 Minuten
29. Apr 2026
Maschinelles Lernen in .NET - .NET, Python und KI, Teil 2
Für eine performante und plattformübergreifende Inferenz von NET-Projekten empfiehlt sich eine hybride Strategie aus Training oder Prototyping in Scikit-Learn/Python, Export nach ONNX und Einbindung in .NET über ML.NET oder ONNX Runtime.
7 Minuten
Volltextsuche mit SQLite: FTS5 und Fuzzy Search - SQLite für .NET-Entwickler, Teil 4
Hochperformante Suche ohne externe Suchmaschine? Wie man mit der in SQLite eingebauten Volltextsuch-Engine FTS5 eine effiziente Suche mit Tippfehlertoleranz implementiert – und in welchen Fällen Elasticsearch doch die bessere Wahl ist.
6 Minuten
22. Apr 2026

Das könnte Dich auch interessieren

00:00
MCP: Der USB-C-Stecker für Deine KI-App - Model Context Protocol auf der DWX
Jonah Andersson bringt es auf den Punkt: Das Model Context Protocol ist kein Hype-Buzzword, sondern eine echte Hilfe für .NET-Entwickler:innen. Wer MCP richtig einsetzt, spart sich aufwändige Integrationsarbeit – und behält trotzdem die Kontrolle über die eigene Business-Logik.
7. Apr 2026
Wissensquellen liefern Daten für präzise Antworten - Low Code/No Code und KI mit Copilot Studio, Teil 3
Wissensquellen (Knowledge Sources) stellen dem KI-Agenten zusätzliche, durchsuchbare Informationen bereit, um fundierte, kontextbezogene Antworten auf Basis von Unterneh-menswissen oder fachspezifischen Informationen zu generieren.
7 Minuten
7. Apr 2026
Infinite AI Conference: So setzt Du KI in jedem Schritt des Software-Lifecycle ein - KI gehört in Deinen Workflow
Von den Anforderungen über Design, Implementierung bis zum Testen, Deployment und Monitoring: Auf der Infinite AI Conference 2026 erfährst Du, wie Dich die KI im gesamten Lifecycle unterstützen kann.
4 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige