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

JSON mit T-SQL auswerten - Neues in SQL Server 2025, Teil 2
Die JSON-Unterstützung in SQL Server 2025 erweitert das relationale Modell um die direkte Verarbeitung dokumentbasierter Daten.
6 Minuten
13. Mai 2026
Vom Python-Modell zur .NET-Anwendung - .NET, Python und KI, Teil 4
Am Szenario einer Sentiment-Analyse verdeutlicht ein durchgängiges Anwendungsbeispiel, wie aus einem isolierten Data-Science-Ergebnis eine konkret genutzte Funktion innerhalb einer .NET-Business-Anwendung entsteht.
7 Minuten
Mit SQL Server 2025 HTTP-APIs aufrufen - Neues in SQL Server 2025, Teil 1
API-Aufrufe mit SQL Server 2025 sind kein Spielzeug, sondern ein ernst zu nehmender Integrationsmechanismus.
6 Minuten

Das könnte Dich auch interessieren

00:00
Wenn die KI den Bug findet, bevor Du anfängst zu suchen - KI in der Softwarewartung
Root-Cause-Analysis, Technical Debt, Legacy-Dokumentation – das sind die Klassiker, die Entwickler:innen regelmäßig Stunden kosten. Harald Binkle erklärt im Interview, wie KI-Werkzeuge die Arbeit der Maintenance vereinfachen können. Wer mehr will, sollte auf die Infinite AI Conference 2026 kommen.
5. Mai 2026
ROI von KI
Wie Entwickler die Lücke bei der Bereitschaft, KI einzusetzen, schließen können.
7 Minuten
00:00
Vibe Coding war gestern – Vise Coding ist die Zukunft - KI-gestützte Softwareentwicklung
Der Begriff Vibe Coding geistert durch die Branche – aber was steckt wirklich dahinter? Gregor Biswanger erklärt im DWX-Interview, warum nicht alle KI-Agenten-Workflows gleich sind, wo Vise Coding den Unterschied macht und warum die Branche gerade eine ziemlich wilde Dating-Show erlebt.
31. Mär 2026
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige