AYUDA .NET

TensorFlow .NET (Cómo funciona para desarrolladores)

El aprendizaje automático (ML) ha revolucionado diversas industrias, desde la atención médica hasta las finanzas, al permitir la toma de decisiones inteligentes y la automatización. TensorFlow, el marco de aprendizaje profundo y ML de código abierto de Google, ha estado a la vanguardia de esta revolución. Con TensorFlow.NET, los desarrolladores de .NET pueden aprovechar el poder de TensorFlow dentro del ecosistema de C#. En este artículo, exploraremos TensorFlow.NET, sus características, beneficios y aplicaciones prácticas en el desarrollo con C#. También, aprenderemos sobre una biblioteca de generación de PDF llamada IronPDF de Iron Software con un ejemplo práctico.

Entendiendo TensorFlow.NET

TensorFlow.NET es un enlace .NET para TensorFlow, que permite a los desarrolladores utilizar la funcionalidad de TensorFlow directamente dentro de capas de aplicaciones de C# y .NET. Desarrollado por la comunidad y mantenido por la organización SciSharp, TensorFlow.NET proporciona una integración sin problemas de las capacidades de aprendizaje automático y redes neuronales de TensorFlow con la versatilidad de la plataforma .NET. Permite a los desarrolladores de C# crear redes neuronales, entrenar modelos o imágenes de entrenamiento e implantar modelos ML utilizando las amplias API y herramientas del sistema TensorFlow.

Características principales de TensorFlow.NET

  1. Compatibilidad con TensorFlow: TensorFlow.NET proporciona compatibilidad total con las APIs y operaciones de TensorFlow, incluyendo la manipulación o activación de tensores, capas de redes neuronales, funciones de pérdida, optimizadores y utilidades para el preprocesamiento y evaluación de datos.

  2. Alto Rendimiento: TensorFlow.NET aprovecha el motor de ejecución de gráficos computacionales eficiente y los núcleos optimizados de TensorFlow para ofrecer inferencia y entrenamiento de aprendizaje automático de alto rendimiento en CPUs y GPUs.

  3. Fácil Integración: TensorFlow.NET se integra sin problemas con las aplicaciones y bibliotecas existentes de .NET, permitiendo a los desarrolladores aprovechar las capacidades de TensorFlow sin salir del entorno de desarrollo C# familiar.

  4. Portabilidad del Modelo: TensorFlow.NET permite a los desarrolladores importar modelos de TensorFlow preentrenados y exportar modelos entrenados para inferencia en otros entornos basados en TensorFlow, como Python o dispositivos móviles.

  5. Flexibilidad y Extensibilidad: TensorFlow.NET ofrece flexibilidad para personalizar y extender modelos de aprendizaje automático utilizando características del lenguaje C#, como LINQ (Language Integrated Query) para la manipulación de datos y paradigmas de programación funcional para la composición de modelos.

  6. Soporte de la Comunidad y Documentación: TensorFlow.NET se beneficia de una comunidad activa de colaboradores que proporcionan documentación, tutoriales y ejemplos para ayudar a los desarrolladores a comenzar con el aprendizaje automático en el mundo de C# utilizando TensorFlow.

Ejemplos prácticos con TensorFlow.NET

Exploremos algunos escenarios prácticos donde TensorFlow.NET se puede utilizar para construir y desplegar modelos de aprendizaje automático en C#:

  1. Carga y uso de modelos preentrenados:
    // 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);
' Load a pre-trained TensorFlow model
	Dim model = TensorFlowModel.LoadModel("model.pb")
	' Perform inference on input data
	Dim input = New Single(, ) {
		{ 1.0F, 2.0F, 3.0F }
	}
	Dim output = model.Predict(input)
$vbLabelText   $csharpLabel
  1. Entrenamiento de Modelos Personalizados:
    // Create a neural network model using TensorFlow.NET APIs and metrics
    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 just like Python
    model.Fit(x_train, y_train, epochs: 10, batchSize: 32);
    // Create a neural network model using TensorFlow.NET APIs and metrics
    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 just like Python
    model.Fit(x_train, y_train, epochs: 10, batchSize: 32);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
  1. Evaluación y Despliegue:
    // 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Más ejemplos de TensorFlow se pueden encontrar en la página de Ejemplos de TensorFlow.NET.

// static Tensorflow
using static Tensorflow.Binding;
namespace IronPdfDemos
{
    public class TensorFlow
    {
        public static void Execute()
        {
            var hello = tf.constant("Hello, TensorFlow!");
            Console.WriteLine(hello);
        }
    }
}
// static Tensorflow
using static Tensorflow.Binding;
namespace IronPdfDemos
{
    public class TensorFlow
    {
        public static void Execute()
        {
            var hello = tf.constant("Hello, TensorFlow!");
            Console.WriteLine(hello);
        }
    }
}
' static Tensorflow
Imports Tensorflow.Binding
Namespace IronPdfDemos
	Public Class TensorFlow
		Public Shared Sub Execute()
			Dim hello = tf.constant("Hello, TensorFlow!")
			Console.WriteLine(hello)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Ejemplo de salida de Hello TensorFlow

TensorFlow .NET (Cómo Funciona Para Desarrolladores): Figura 1 - Resultados de la Aplicación de Consola

Ventajas del uso de TensorFlow.NET

  1. Integración fluida: TensorFlow.NET lleva el poder de TensorFlow al ecosistema .NET, permitiendo a los desarrolladores de C# aprovechar técnicas y algoritmos de aprendizaje automático de vanguardia en sus aplicaciones.

  2. Rendimiento y Escalabilidad: TensorFlow.NET aprovecha el motor de ejecución optimizado de TensorFlow para ofrecer cálculos de aprendizaje automático de alto rendimiento, lo que lo hace adecuado para manejar conjuntos de datos a gran escala, imágenes de prueba y modelos complejos o densos.

  3. Entorno de Desarrollo Familiar: La API de TensorFlow.NET permite a los desarrolladores construir y desplegar modelos de aprendizaje automático utilizando características del lenguaje C# y herramientas de desarrollo familiares, reduciendo la curva de aprendizaje para adoptar el aprendizaje automático en aplicaciones C#.

  4. Interoperabilidad y Portabilidad: TensorFlow.NET facilita la interoperabilidad con otros entornos basados en TensorFlow, permitiendo una integración fluida de modelos de aprendizaje automático basados en C# con Python, TensorFlow Serving y TensorFlow Lite.

  5. Desarrollo impulsado por la comunidad: TensorFlow.NET se beneficia de una comunidad activa de colaboradores y usuarios que ofrecen soporte, comentarios y contribuciones al proyecto, asegurando su continuo crecimiento y mejora.

Licencia de TensorFlow.NET

Se trata de un paquete de código abierto con licencia Apache que puede utilizarse libremente. Más información sobre la licencia se puede leer en la página de Licencia de TensorFlow.NET.

Presentación de IronPDF

TensorFlow .NET (Cómo funciona para desarrolladores): Figura 2 - IronPDF

IronPDF es una poderosa biblioteca PDF de C# que permite a los desarrolladores crear, editar y firmar PDFs directamente desde entradas de HTML, CSS, imágenes y JavaScript. Es una solución comercial de alto rendimiento y bajo consumo de memoria. Estas son algunas de sus principales características:

  1. Conversión de HTML a PDF: IronPDF puede convertir archivos HTML, cadenas HTML y URLs a PDFs. Por ejemplo, puedes renderizar una página web como PDF utilizando el renderizador de PDF de Chrome.

  2. Soporte Multiplataforma: IronPDF funciona en varias plataformas .NET, incluyendo .NET Core, .NET Standard y .NET Framework. Es compatible con Windows, Linux y macOS.

  3. Edición y Firma: Puede establecer propiedades, añadir seguridad (contraseñas y permisos), e incluso aplicar firmas digitales a sus PDFs.

  4. Plantillas y Configuración de Página: Personaliza tus PDFs añadiendo encabezados, pies de página y números de página, y ajustando los márgenes. IronPDF también admite diseños responsivos y tamaños de papel personalizados.

  5. Conformidad con los estándares: IronPDF cumple con los estándares PDF como PDF/A y PDF/UA. Admite la codificación de caracteres UTF-8 y gestiona activos como imágenes, CSS y fuentes.

Generar documentos PDF usando TensorFlow.NET y IronPDF

En primer lugar, cree un proyecto de Visual Studio y seleccione la siguiente plantilla de aplicación de consola.

TensorFlow .NET (Cómo Funciona para Desarrolladores): Figura 3 - Proyecto de Visual Studio

Indique el nombre y la ubicación del proyecto.

TensorFlow .NET (Cómo Funciona para Desarrolladores): Figura 4 - Configuración del Proyecto

Seleccione la versión .NET necesaria en el siguiente paso y haga clic en el botón Crear.

Instale IronPDF desde el paquete NuGet en el Administrador de Paquetes de Visual Studio.

TensorFlow .NET (Cómo funciona para desarrolladores): Figura 5 - TensorFlow.NET

Instale los paquetes TensorFlow.NET y TensorFlow.Keras, un paquete independiente utilizado para ejecutar modelos.

TensorFlow .NET (Cómo funciona para los desarrolladores): Figura 6 - Instalar paquete 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
            var content = "<h1>Demonstrate TensorFlow with IronPDF</h1>";
            content += $"<p></p>";
            content += $"<h2></h2>";

            // Eager mode
            content += $"<h2>Enable Eager Execution</h2>";
            content += $"<p>tf.enable_eager_execution();</p>";

            // tf is a static TensorFlow instance
            tf.enable_eager_execution(); // Enable eager mode

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

            content += $"<p></p>";
            content += $"<p></p>";
            content += $"<p></p>";

            content += $"<h2>Various tensor operations.</h2>";
            // Various tensor operations usage
            // Note: Tensors also support operators (+, *, ...)
            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>";

            content += $"<h2>Access tensors value.</h2>";
            // Tensors value
            print($"{(int)a} + {(int)b} = {(int)add}");
            print($"{(int)a} - {(int)b} = {(int)sub}");
            print($"{(int)a} * {(int)b} = {(int)mul}");
            print($"{(int)a} / {(int)b} = {(double)div}");

            content += $"<p>{(int)a} + {(int)b} = {(int)add}</p>";
            content += $"<p>{(int)a} - {(int)b} = {(int)sub}</p>";
            content += $"<p>{(int)a} * {(int)b} = {(int)mul}</p>";
            content += $"<p>{(int)a} / {(int)b} = {(double)div}</p>";

            // Some more 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>Access tensors value.</h2>";
            // Access tensors value
            print("mean =", mean.numpy());
            print("sum =", sum.numpy());

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

            content += $"<h2>Matrix multiplications.</h2>";
            // Matrix multiplications with a single row
            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 += "<p>matrix1 = tf.constant(new float[,] { { { 1, 2 }}, { { 3, 4 }} })</p>";
            content += "<p>matrix2 = tf.constant(new float[,] { { { 5, 6 }}, { { 7, 8 }} })</p>";
            content += "<p>product = tf.matmul(matrix1, matrix2)</p>";

            content += $"<h2>Convert Tensor to Numpy.</h2>";
            // Convert Tensor to Numpy
            print("product =", product.numpy());

            content += $"<p>product = {product.numpy()}</p>";

            // Create a PDF from an HTML string using C#
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            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
            var content = "<h1>Demonstrate TensorFlow with IronPDF</h1>";
            content += $"<p></p>";
            content += $"<h2></h2>";

            // Eager mode
            content += $"<h2>Enable Eager Execution</h2>";
            content += $"<p>tf.enable_eager_execution();</p>";

            // tf is a static TensorFlow instance
            tf.enable_eager_execution(); // Enable eager mode

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

            content += $"<p></p>";
            content += $"<p></p>";
            content += $"<p></p>";

            content += $"<h2>Various tensor operations.</h2>";
            // Various tensor operations usage
            // Note: Tensors also support operators (+, *, ...)
            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>";

            content += $"<h2>Access tensors value.</h2>";
            // Tensors value
            print($"{(int)a} + {(int)b} = {(int)add}");
            print($"{(int)a} - {(int)b} = {(int)sub}");
            print($"{(int)a} * {(int)b} = {(int)mul}");
            print($"{(int)a} / {(int)b} = {(double)div}");

            content += $"<p>{(int)a} + {(int)b} = {(int)add}</p>";
            content += $"<p>{(int)a} - {(int)b} = {(int)sub}</p>";
            content += $"<p>{(int)a} * {(int)b} = {(int)mul}</p>";
            content += $"<p>{(int)a} / {(int)b} = {(double)div}</p>";

            // Some more 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>Access tensors value.</h2>";
            // Access tensors value
            print("mean =", mean.numpy());
            print("sum =", sum.numpy());

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

            content += $"<h2>Matrix multiplications.</h2>";
            // Matrix multiplications with a single row
            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 += "<p>matrix1 = tf.constant(new float[,] { { { 1, 2 }}, { { 3, 4 }} })</p>";
            content += "<p>matrix2 = tf.constant(new float[,] { { { 5, 6 }}, { { 7, 8 }} })</p>";
            content += "<p>product = tf.matmul(matrix1, matrix2)</p>";

            content += $"<h2>Convert Tensor to Numpy.</h2>";
            // Convert Tensor to Numpy
            print("product =", product.numpy());

            content += $"<p>product = {product.numpy()}</p>";

            // Create a PDF from an HTML string using C#
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("tensorflow.pdf");
        }
    }
}
Imports IronPdf
Imports Tensorflow.Binding

Namespace IronPdfDemos
	Public Class Program
		Public Shared Sub Main()
			' Instantiate Cache and ChromePdfRenderer
			Dim renderer = New ChromePdfRenderer()

			' Prepare HTML
			Dim content = "<h1>Demonstrate TensorFlow with IronPDF</h1>"
			content &= $"<p></p>"
			content &= $"<h2></h2>"

			' Eager mode
			content &= $"<h2>Enable Eager Execution</h2>"
			content &= $"<p>tf.enable_eager_execution();</p>"

			' tf is a static TensorFlow instance
			tf.enable_eager_execution() ' Enable eager mode

			content &= $"<h2>Define tensor constants.</h2>"
			' Introduce tensor constants
			Dim a = tf.constant(5)
			Dim b = tf.constant(6)
			Dim c = tf.constant(7)

			content &= $"<p></p>"
			content &= $"<p></p>"
			content &= $"<p></p>"

			content &= $"<h2>Various tensor operations.</h2>"
			' Various tensor operations usage
			' Note: Tensors also support operators (+, *, ...)
			Dim add = tf.add(a, b)
			Dim [sub] = tf.subtract(a, b)
			Dim mul = tf.multiply(a, b)
			Dim 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>"

			content &= $"<h2>Access tensors value.</h2>"
			' Tensors value
			print($"{CInt(a)} + {CInt(b)} = {CInt(add)}")
			print($"{CInt(a)} - {CInt(b)} = {CInt([sub])}")
			print($"{CInt(a)} * {CInt(b)} = {CInt(mul)}")
			print($"{CInt(a)} / {CInt(b)} = {CDbl(div)}")

			content &= $"<p>{CInt(a)} + {CInt(b)} = {CInt(add)}</p>"
			content &= $"<p>{CInt(a)} - {CInt(b)} = {CInt([sub])}</p>"
			content &= $"<p>{CInt(a)} * {CInt(b)} = {CInt(mul)}</p>"
			content &= $"<p>{CInt(a)} / {CInt(b)} = {CDbl(div)}</p>"

			' Some more operations
			Dim mean = tf.reduce_mean(tf.constant( { a, b, c }))
			Dim sum = tf.reduce_sum(tf.constant( { a, b, c }))

			content &= $"<h2>Access tensors value.</h2>"
			' Access tensors value
			print("mean =", mean.numpy())
			print("sum =", sum.numpy())

			content &= $"<p>mean = {mean.numpy()}</p>"
			content &= $"<p>sum = {sum.numpy()}</p>"

			content &= $"<h2>Matrix multiplications.</h2>"
			' Matrix multiplications with a single row
			Dim matrix1 = tf.constant(New Single(, ) {
				{ 1, 2 },
				{ 3, 4 }
			})
			Dim matrix2 = tf.constant(New Single(, ) {
				{ 5, 6 },
				{ 7, 8 }
			})
			Dim product = tf.matmul(matrix1, matrix2)

			content &= "<p>matrix1 = tf.constant(new float[,] { { { 1, 2 }}, { { 3, 4 }} })</p>"
			content &= "<p>matrix2 = tf.constant(new float[,] { { { 5, 6 }}, { { 7, 8 }} })</p>"
			content &= "<p>product = tf.matmul(matrix1, matrix2)</p>"

			content &= $"<h2>Convert Tensor to Numpy.</h2>"
			' Convert Tensor to Numpy
			print("product =", product.numpy())

			content &= $"<p>product = {product.numpy()}</p>"

			' Create a PDF from an HTML string using C#
			Dim pdf = renderer.RenderHtmlAsPdf(content)
			' Export to a file or Stream
			pdf.SaveAs("tensorflow.pdf")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Código Explicación

Desglosemos el fragmento de código:

  1. Sentencias de Importación:

    El código comienza importando las bibliotecas necesarias. Específicamente:

    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.
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
  1. Ejecutar Inmediatamente:

    La línea tf.enable_eager_execution(); habilita el modo de ejecución inmediata de TensorFlow. En la ejecución ansiosa, las operaciones se evalúan inmediatamente, lo que facilita la depuración y la interacción con los tensores.

  2. Definir Constantes de Tensor:

    El código define tres tensores constantes: a, b y c. Se inicializan con los valores 5, 6 y 7, respectivamente.

  3. Varias operaciones de tensores:

    Se realizan las siguientes operaciones tensoriales:

    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.
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
  1. Acceder a los valores del tensor:

    Los resultados de las operaciones de tensores se imprimen utilizando la función print:

    print($"{(int)a} + {(int)b} = {(int)add}");
    print($"{(int)a} - {(int)b} = {(int)sub}");
    print($"{(int)a} * {(int)b} = {(int)mul}");
    print($"{(int)a} / {(int)b} = {(double)div}");
    print($"{(int)a} + {(int)b} = {(int)add}");
    print($"{(int)a} - {(int)b} = {(int)sub}");
    print($"{(int)a} * {(int)b} = {(int)mul}");
    print($"{(int)a} / {(int)b} = {(double)div}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ejemplo de salida:

- 5 + 6 = 11

- 5 - 6 = -1

- 5 * 6 = 30

- 5 / 6 = 0.8333333333333334
  1. Operaciones Adicionales:

    El código calcula la media y la suma de las constantes [a, b, c].

  2. Generación de PDF:

    Se utilizan ChromePdfRenderer y RenderHtmlAsPdf de IronPDF para renderizar la cadena HTML en un documento PDF.

Salida

TensorFlow .NET (Cómo funciona para los desarrolladores): Figura 7 - Salida en PDF

Licencia IronPDF

IronPDF necesita una licencia para ejecutarse. Más información sobre licencias se puede encontrar en la página de licencias de IronPDF. Coloca la clave en el archivo appSettings.json como se muestra a continuación.

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

Conclusión

En conclusión, TensorFlow.NET permite a los desarrolladores de C# explorar el mundo del aprendizaje automático e inteligencia artificial con la versatilidad y productividad del ecosistema .NET. Ya sea que estés construyendo aplicaciones inteligentes, herramientas de análisis predictivo o sistemas de toma de decisiones automatizadas, TensorFlow.NET proporciona un marco poderoso y flexible para liberar el potencial del aprendizaje automático en C#. Junto con la biblioteca IronPDF de Iron Software, los desarrolladores pueden adquirir habilidades avanzadas para desarrollar aplicaciones modernas.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
Stripe .NET (Cómo funciona para desarrolladores)
SIGUIENTE >
Humanizer C# (Cómo funciona para desarrolladores)