Passer au contenu du pied de page
.NET AIDE

TensorFlow .NET (Comment ça fonctionne pour les développeurs)

L'apprentissage automatique (ML) a révolutionné diverses industries, de la santé à la finance, en permettant une prise de décision intelligente et une automatisation. TensorFlow, le cadre open-source de ML et d'apprentissage profond de Google, a été à la pointe de cette révolution. Avec TensorFlow.NET, les développeurs .NET peuvent exploiter la puissance de TensorFlow au sein de l'écosystème C#. Dans cet article, nous explorerons TensorFlow.NET, ses fonctionnalités, ses avantages et ses applications pratiques dans le développement C#. De plus, nous apprendrons à connaître une bibliothèque de génération de PDF appelée IronPDF de Iron Software avec un exemple pratique.

Comprendre TensorFlow.NET

TensorFlow.NET est une liaison .NET pour TensorFlow, permettant aux développeurs d'utiliser les fonctionnalités de TensorFlow directement au sein des couches applicatives C# et .NET. Développé par la communauté et maintenu par l'organisation SciSharp, TensorFlow.NET offre une intégration transparente des capacités d'apprentissage automatique et de réseaux neuronaux de TensorFlow avec la polyvalence de la plateforme .NET. Il permet aux développeurs C# de construire des réseaux neuronaux, d'entraîner des modèles et de déployer des modèles ML en utilisant les API système et les outils étendus de TensorFlow.

Fonctionnalités clés de TensorFlow.NET

  1. Compatibilité TensorFlow : TensorFlow.NET offre une compatibilité complète avec les API et les opérations de TensorFlow, y compris la manipulation de tenseur, les couches de réseaux neuronaux, les fonctions de perte, les optimiseurs et les utilitaires pour le prétraitement et l'évaluation des données.
  2. Haute performance : TensorFlow.NET exploite le moteur d'exécution de graphes computationnels efficace et les noyaux optimisés de TensorFlow pour offrir une inférence et un entraînement d'apprentissage automatique haute performance sur les CPU et les GPU.
  3. Intégration facile : TensorFlow.NET s'intègre parfaitement aux applications et bibliothèques .NET existantes, permettant aux développeurs d'exploiter les capacités de TensorFlow sans quitter l'environnement de développement familier de C#.
  4. Portabilité du modèle : TensorFlow.NET permet aux développeurs d'importer des modèles TensorFlow pré-entraînés et d'exporter des modèles entraînés pour l'inférence dans d'autres environnements basés sur TensorFlow, tels que Python ou les appareils mobiles.
  5. Flexibilité et extensibilité : TensorFlow.NET offre une flexibilité pour personnaliser et étendre les modèles d'apprentissage automatique en utilisant les fonctionnalités du langage C#, telles que LINQ (Language Integrated Query) pour la manipulation des données et les paradigmes de programmation fonctionnelle pour la composition de modèles.
  6. Support communautaire et documentation : TensorFlow.NET bénéficie d'une communauté active de contributeurs qui fournissent documentation, tutoriels et exemples pour aider les développeurs à se lancer dans l'apprentissage automatique dans le monde C# en utilisant TensorFlow.

Exemples pratiques avec TensorFlow.NET

Explorons quelques scénarios pratiques où TensorFlow.NET peut être utilisé pour construire et déployer des modèles d'apprentissage automatique en C# :

  1. Chargement et utilisation de modèles pré-entraînés :

    // Load a pre-trained TensorFlow model
    var model = TensorFlowModel.LoadModel("model.pb");
    // Perform inference on input data
    var input = new float[,] { { 1.0f, 2.0f, 3.0f } };
    var output = model.Predict(input);
    // Load a pre-trained TensorFlow model
    var model = TensorFlowModel.LoadModel("model.pb");
    // Perform inference on input data
    var input = new float[,] { { 1.0f, 2.0f, 3.0f } };
    var output = model.Predict(input);
    $vbLabelText   $csharpLabel
  2. Entraînement de modèles personnalisés :

    // Create a neural network model using TensorFlow.NET APIs
    var input = new Input(Shape.Scalar);
    var output = new Dense(1, Activation.ReLU).Forward(input);
    // Compile the model with loss function and optimizer algorithms
    var model = new Model(input, output);
    model.Compile(optimizer: new SGD(), loss: Losses.MeanSquaredError);
    // Train the model with training data
    model.Fit(x_train, y_train, epochs: 10, batchSize: 32);
    // Create a neural network model using TensorFlow.NET APIs
    var input = new Input(Shape.Scalar);
    var output = new Dense(1, Activation.ReLU).Forward(input);
    // Compile the model with loss function and optimizer algorithms
    var model = new Model(input, output);
    model.Compile(optimizer: new SGD(), loss: Losses.MeanSquaredError);
    // Train the model with training data
    model.Fit(x_train, y_train, epochs: 10, batchSize: 32);
    $vbLabelText   $csharpLabel
  3. Évaluation et déploiement :

    // Evaluate the trained model on test data
    var evaluation = model.Evaluate(x_test, y_test);
    // Export the trained model for deployment
    model.SaveModel("trained_model.pb");
    // Evaluate the trained model on test data
    var evaluation = model.Evaluate(x_test, y_test);
    // Export the trained model for deployment
    model.SaveModel("trained_model.pb");
    $vbLabelText   $csharpLabel

Plus d'exemples de TensorFlow peuvent être trouvés sur la page des Exemples TensorFlow.NET.

// Use static TensorFlow
using static Tensorflow.Binding;

namespace IronPdfDemos
{
    public class TensorFlow
    {
        public static void Execute()
        {
            // Create a TensorFlow constant
            var hello = tf.constant("Hello, TensorFlow!");
            Console.WriteLine(hello);
        }
    }
}
// Use static TensorFlow
using static Tensorflow.Binding;

namespace IronPdfDemos
{
    public class TensorFlow
    {
        public static void Execute()
        {
            // Create a TensorFlow constant
            var hello = tf.constant("Hello, TensorFlow!");
            Console.WriteLine(hello);
        }
    }
}
$vbLabelText   $csharpLabel

Exemple de sortie Hello TensorFlow

TensorFlow .NET (How It Works For Developers) : Figure 1 - Résultat de l'application console

Avantages de l'utilisation de TensorFlow.NET

  1. Intégration transparente : TensorFlow.NET apporte la puissance de TensorFlow à l'écosystème .NET, permettant aux développeurs C# de tirer parti des techniques et algorithmes d'apprentissage automatique de pointe dans leurs applications.
  2. Performance et évolutivité : TensorFlow.NET exploite le moteur d'exécution optimisé de TensorFlow pour offrir des calculs d'apprentissage automatique haute performance, le rendant adapté à la gestion de grands ensembles de données et de modèles complexes.
  3. Environnement de développement familier : L'API TensorFlow.NET permet aux développeurs de construire et déployer des modèles d'apprentissage automatique en utilisant les fonctionnalités familières du langage C# et les outils de développement, réduisant ainsi la courbe d'apprentissage pour adopter l'apprentissage automatique dans les applications C#.
  4. Interopérabilité et portabilité : TensorFlow.NET facilite l'interopérabilité avec d'autres environnements basés sur TensorFlow, permettant une intégration transparente des modèles d'apprentissage automatique basés sur C# avec Python, TensorFlow Serving et TensorFlow Lite.
  5. Développement piloté par la communauté : TensorFlow.NET bénéficie d'une communauté active de contributeurs et d'utilisateurs qui fournissent support, commentaires et contributions au projet, assurant sa croissance continue et son amélioration.

Licence TensorFlow.NET

C'est un package open-source sous licence Apache qui peut être utilisé librement. En savoir plus sur la licence sur la page de la licence TensorFlow.NET.

Présentation d'IronPDF

TensorFlow .NET (How It Works For Developers) : Figure 2 - IronPDF

IronPDF est une puissante bibliothèque PDF C# qui permet aux développeurs de créer, éditer et signer des PDFs directement à partir d'entrées HTML, CSS, images et JavaScript. C'est une solution de qualité commerciale avec des performances élevées et une faible empreinte mémoire. Voici quelques caractéristiques clés :

  1. Conversion HTML en PDF : IronPDF peut convertir des fichiers HTML, des chaînes HTML et des URLs en PDFs. Par exemple, vous pouvez rendre une page web sous forme de PDF en utilisant le moteur de rendu PDF Chrome.
  2. Support multi-plateforme : IronPDF fonctionne sur diverses plateformes .NET, y compris .NET Core, .NET Standard et .NET Framework. Il est compatible avec Windows, Linux, et macOS.
  3. Édition et signature : Vous pouvez définir des propriétés, ajouter de la sécurité (mots de passe et permissions), et même appliquer des signatures numériques à vos PDFs.
  4. Modèles et réglages de pages : Personnalisez vos PDFs en ajoutant des en-têtes, pieds de page et numéros de page, et en ajustant les marges. IronPDF prend également en charge les mises en page réactives et les formats de papier personnalisés.
  5. Conformité aux normes : IronPDF adhère aux normes PDF telles que PDF/A et PDF/UA. Il prend en charge l'encodage de caractères UTF-8 et gère les actifs comme les images, CSS et polices.

Générer des documents PDF en utilisant TensorFlow.NET et IronPDF

Tout d'abord, créez un projet Visual Studio et sélectionnez le modèle Console App ci-dessous.

TensorFlow .NET (How It Works For Developers) : Figure 3 - Projet Visual Studio

Fournissez le nom et l'emplacement du projet.

TensorFlow .NET (How It Works For Developers) : Figure 4 - Configuration du projet

Sélectionnez la version .NET requise à l'étape suivante et cliquez sur le bouton Créer.

Installez IronPDF à partir du package NuGet depuis le gestionnaire de packages de Visual Studio.

TensorFlow .NET (How It Works For Developers) : Figure 5 - TensorFlow.NET

Installez les packages TensorFlow.NET et TensorFlow.Keras, un package indépendant utilisé pour exécuter des modèles.

TensorFlow .NET (How It Works For Developers) : Figure 6 - Installer le package TensorFlow.Keras

using IronPdf;
using static Tensorflow.Binding;

namespace IronPdfDemos
{
    public class Program
    {
        public static void Main()
        {
            // Instantiate Cache and ChromePdfRenderer
            var renderer = new ChromePdfRenderer();

            // Prepare HTML content for the PDF
            var content = "<h1>Demonstrate TensorFlow with IronPDF</h1>";
            content += "<h2>Enable Eager Execution</h2>";
            content += "<p>tf.enable_eager_execution();</p>";

            // Enable eager execution mode in TensorFlow
            tf.enable_eager_execution();

            // Define tensor constants
            content += "<h2>Define Tensor Constants</h2>";
            var a = tf.constant(5);
            var b = tf.constant(6);
            var c = tf.constant(7);

            // Perform various tensor operations
            content += "<h2>Various Tensor Operations</h2>";
            var add = tf.add(a, b);
            var sub = tf.subtract(a, b);
            var mul = tf.multiply(a, b);
            var div = tf.divide(a, b);

            content += $"<p>var add = tf.add(a, b);</p>";
            content += $"<p>var sub = tf.subtract(a, b);</p>";
            content += $"<p>var mul = tf.multiply(a, b);</p>";
            content += $"<p>var div = tf.divide(a, b);</p>";

            // Output tensor values to HTML content
            content += "<h2>Access Tensor Values</h2>";
            content += $"<p>{a.numpy()} + {b.numpy()} = {add.numpy()}</p>";
            content += $"<p>{a.numpy()} - {b.numpy()} = {sub.numpy()}</p>";
            content += $"<p>{a.numpy()} * {b.numpy()} = {mul.numpy()}</p>";
            content += $"<p>{a.numpy()} / {b.numpy()} = {div.numpy()}</p>";

            // Perform additional operations
            var mean = tf.reduce_mean(tf.constant(new[] { a, b, c }));
            var sum = tf.reduce_sum(tf.constant(new[] { a, b, c }));

            content += "<h2>Additional Operations</h2>";
            content += $"<p>mean = {mean.numpy()}</p>";
            content += $"<p>sum = {sum.numpy()}</p>";

            // Perform matrix multiplication
            var matrix1 = tf.constant(new float[,] { { 1, 2 }, { 3, 4 } });
            var matrix2 = tf.constant(new float[,] { { 5, 6 }, { 7, 8 } });
            var product = tf.matmul(matrix1, matrix2);

            content += "<h2>Matrix Multiplications</h2>";
            content += "<p>Multiplication Result:</p>";
            content += $"<p>product = {product.numpy()}</p>";

            // Render HTML content to PDF
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Save PDF to file
            pdf.SaveAs("tensorflow.pdf");
        }
    }
}
using IronPdf;
using static Tensorflow.Binding;

namespace IronPdfDemos
{
    public class Program
    {
        public static void Main()
        {
            // Instantiate Cache and ChromePdfRenderer
            var renderer = new ChromePdfRenderer();

            // Prepare HTML content for the PDF
            var content = "<h1>Demonstrate TensorFlow with IronPDF</h1>";
            content += "<h2>Enable Eager Execution</h2>";
            content += "<p>tf.enable_eager_execution();</p>";

            // Enable eager execution mode in TensorFlow
            tf.enable_eager_execution();

            // Define tensor constants
            content += "<h2>Define Tensor Constants</h2>";
            var a = tf.constant(5);
            var b = tf.constant(6);
            var c = tf.constant(7);

            // Perform various tensor operations
            content += "<h2>Various Tensor Operations</h2>";
            var add = tf.add(a, b);
            var sub = tf.subtract(a, b);
            var mul = tf.multiply(a, b);
            var div = tf.divide(a, b);

            content += $"<p>var add = tf.add(a, b);</p>";
            content += $"<p>var sub = tf.subtract(a, b);</p>";
            content += $"<p>var mul = tf.multiply(a, b);</p>";
            content += $"<p>var div = tf.divide(a, b);</p>";

            // Output tensor values to HTML content
            content += "<h2>Access Tensor Values</h2>";
            content += $"<p>{a.numpy()} + {b.numpy()} = {add.numpy()}</p>";
            content += $"<p>{a.numpy()} - {b.numpy()} = {sub.numpy()}</p>";
            content += $"<p>{a.numpy()} * {b.numpy()} = {mul.numpy()}</p>";
            content += $"<p>{a.numpy()} / {b.numpy()} = {div.numpy()}</p>";

            // Perform additional operations
            var mean = tf.reduce_mean(tf.constant(new[] { a, b, c }));
            var sum = tf.reduce_sum(tf.constant(new[] { a, b, c }));

            content += "<h2>Additional Operations</h2>";
            content += $"<p>mean = {mean.numpy()}</p>";
            content += $"<p>sum = {sum.numpy()}</p>";

            // Perform matrix multiplication
            var matrix1 = tf.constant(new float[,] { { 1, 2 }, { 3, 4 } });
            var matrix2 = tf.constant(new float[,] { { 5, 6 }, { 7, 8 } });
            var product = tf.matmul(matrix1, matrix2);

            content += "<h2>Matrix Multiplications</h2>";
            content += "<p>Multiplication Result:</p>";
            content += $"<p>product = {product.numpy()}</p>";

            // Render HTML content to PDF
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Save PDF to file
            pdf.SaveAs("tensorflow.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

Explication du code

Décomposons l'extrait de code :

  1. Instructions d'importation :

    Le code commence par importer les bibliothèques nécessaires. En particulier :

    using IronPdf; // This imports the IronPDF package, which is used for working with PDF files.
    using static Tensorflow.Binding; // This imports the TensorFlow library, specifically the .NET standard binding.
    using IronPdf; // This imports the IronPDF package, which is used for working with PDF files.
    using static Tensorflow.Binding; // This imports the TensorFlow library, specifically the .NET standard binding.
    $vbLabelText   $csharpLabel
  2. Exécution immédiate :

    La ligne tf.enable_eager_execution(); active le mode d'exécution immédiate de TensorFlow. En exécution eager, les opérations sont évaluées immédiatement, ce qui facilite le débogage et l'interaction avec les tenseurs.

  3. Définir les constantes de tenseurs :

    Le code définit trois constantes de tenseurs : a, b et c. Celles-ci sont initialisées avec les valeurs 5, 6, et 7, respectivement.

  4. Différentes opérations de tenseur :

    Les opérations de tenseurs suivantes sont effectuées :

    var add = tf.add(a, b); // Adds a and b.
    var sub = tf.subtract(a, b); // Subtracts b from a.
    var mul = tf.multiply(a, b); // Multiplies a and b.
    var div = tf.divide(a, b); // Divides a by b.
    var add = tf.add(a, b); // Adds a and b.
    var sub = tf.subtract(a, b); // Subtracts b from a.
    var mul = tf.multiply(a, b); // Multiplies a and b.
    var div = tf.divide(a, b); // Divides a by b.
    $vbLabelText   $csharpLabel
  5. Accès aux valeurs de tenseur :

    Les résultats des opérations de tenseurs sont inclus dans le contenu HTML :

    content += $"<p>{a.numpy()} + {b.numpy()} = {add.numpy()}</p>";
    content += $"<p>{a.numpy()} - {b.numpy()} = {sub.numpy()}</p>";
    content += $"<p>{a.numpy()} * {b.numpy()} = {mul.numpy()}</p>";
    content += $"<p>{a.numpy()} / {b.numpy()} = {div.numpy()}</p>";
    content += $"<p>{a.numpy()} + {b.numpy()} = {add.numpy()}</p>";
    content += $"<p>{a.numpy()} - {b.numpy()} = {sub.numpy()}</p>";
    content += $"<p>{a.numpy()} * {b.numpy()} = {mul.numpy()}</p>";
    content += $"<p>{a.numpy()} / {b.numpy()} = {div.numpy()}</p>";
    $vbLabelText   $csharpLabel
  6. Opérations supplémentaires :

    Le code calcule la moyenne et la somme des constantes [a, b, c].

  7. Multiplications de matrices :

    Il effectue une multiplication de matrices entre matrix1 et matrix2 et affiche le résultat.

  8. Génération de PDF :

    ChromePdfRenderer et RenderHtmlAsPdf de IronPDF sont utilisés pour rendre la chaîne HTML dans un document PDF.

Sortie

TensorFlow .NET (How It Works For Developers) : Figure 7 - Sortie PDF

Licence IronPDF

IronPDF nécessite une licence pour être exécuté. Plus d'informations sur les licences peuvent être trouvées sur la page Licences IronPDF. Placez la clé dans le fichier appSettings.json comme indiqué ci-dessous.

{
  "IronPdf.License.LicenseKey": "The Key Here"
}

Conclusion

En conclusion, TensorFlow.NET permet aux développeurs C# d'explorer le monde de l'apprentissage automatique et de l'intelligence artificielle avec la polyvalence et la productivité de l'écosystème .NET. Que vous construisiez des applications intelligentes, des outils d'analyse prédictive, ou des systèmes de prise de décision automatisés, TensorFlow.NET fournit un cadre puissant et flexible pour libérer le potentiel de l'apprentissage automatique en C#. Avec la bibliothèque IronPDF de Iron Software, les développeurs peuvent acquérir des compétences avancées pour développer des applications modernes.

Questions Fréquemment Posées

Comment puis-je intégrer l'apprentissage automatique dans mon application C# ?

Vous pouvez utiliser TensorFlow.NET, une bibliothèque .NET pour TensorFlow, qui vous permet de construire, entraîner et déployer des modèles d'apprentissage automatique au sein de votre application C#. Elle offre une compatibilité totale avec les puissantes API de TensorFlow.

Quelles sont les caractéristiques clés de TensorFlow.NET ?

TensorFlow.NET offre des caractéristiques telles qu'une compatibilité complète avec les API de TensorFlow, des performances élevées grâce au moteur de calcul de TensorFlow, une intégration facile avec les systèmes .NET, la portabilité des modèles et un fort soutien de la communauté.

Comment puis-je convertir du HTML en PDF dans une application .NET ?

Vous pouvez utiliser IronPDF pour convertir du HTML en PDF dans une application .NET. IronPDF permet la conversion des entrées HTML, CSS et JavaScript en documents PDF, offrant une compatibilité multiplateforme et des capacités avancées de manipulation de PDF.

TensorFlow.NET peut-il être utilisé pour importer des modèles depuis Python ?

Oui, TensorFlow.NET prend en charge la portabilité des modèles, vous permettant d'importer des modèles créés dans des environnements comme Python et de les utiliser dans vos applications .NET.

Quel est le potentiel de la combinaison de TensorFlow.NET et IronPDF ?

En combinant TensorFlow.NET et IronPDF, les développeurs peuvent créer des applications intelligentes capables d'effectuer des calculs complexes d'apprentissage automatique et de présenter les résultats dans des documents PDF bien formatés, améliorant ainsi les processus de documentation et de rapports.

TensorFlow.NET est-il adapté au développement multiplateforme ?

Oui, TensorFlow.NET peut être utilisé dans des environnements .NET multiplateformes, permettant aux développeurs de créer des applications compatibles avec divers systèmes d'exploitation.

Comment puis-je éditer et signer des PDF dans une application C# ?

IronPDF fournit des fonctionnalités pour éditer et signer des documents PDF au sein d'une application C#, permettant une manipulation et une gestion robustes des PDF.

Quel soutien est disponible pour les développeurs utilisant TensorFlow.NET ?

TensorFlow.NET est soutenu par une communauté robuste et une documentation complète, facilitant pour les développeurs la recherche de ressources et d'exemples pour les aider dans leur processus de développement.

Comment TensorFlow.NET améliore-t-il l'environnement de développement C# ?

TensorFlow.NET améliore l'environnement de développement C# en intégrant les capacités d'apprentissage automatique de TensorFlow, permettant aux développeurs de tirer parti de toute la puissance de TensorFlow sans quitter l'écosystème .NET.

Où les développeurs peuvent-ils trouver des exemples pratiques d'utilisation d'IronPDF ?

Les développeurs peuvent trouver des exemples pratiques d'utilisation d'IronPDF sur la page de documentation d'IronPDF et via divers ressources en ligne et forums communautaires dédiés à la manipulation de PDF en .NET.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, ...

Lire la suite

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me