跳過到頁腳內容
.NET幫助

TensorFlow .NET(對於開發者的運行原理)

機器學習(ML)已經顛覆了從醫療保健到金融等各個行業,通過實現智能決策和自動化。 Google 的開源機器學習和深度學習框架 TensorFlow 一直處於這場革命的最前沿。 使用 TensorFlow.NET,.NET 開發人員可以在 C# 生態系統中利用 TensorFlow 的強大功能。 在本文中,我們將探索 TensorFlow.NET 的特性、優勢以及在 C# 開發中的實際應用。 此外,我們將通過一個實際示例了解一個名為 IronPDF 的 PDF 生成庫,這是來自 Iron Software 的產品。

了解 TensorFlow.NET

TensorFlow.NET 是 TensorFlow 的 .NET 绑定,使開發人員可以直接在 C# 和 .NET 應用層中使用 TensorFlow 功能。 由社區開發並由 SciSharp 組織維護,TensorFlow.NET 提供了一種將 TensorFlow 的機器學習和神經網絡能力與 .NET 平台的多功能性無縫集成的方法。 它使 C# 開發人員能夠使用 TensorFlow 的大量系統 API 和工具構建神經網絡、訓練模型和部署機器學習模型。

TensorFlow.NET 的關鍵功能

  1. TensorFlow 兼容性TensorFlow.NET 提供與 TensorFlow 的 API 和操作的完全兼容性,包括張量操作、神經網絡層、損失函數、優化器以及數據預處理和評估的工具。
  2. 高性能TensorFlow.NET 利用 TensorFlow 高效的計算圖執行引擎和優化的內核,在 CPU 和 GPU 上提供高性能的機器學習推理和訓練。
  3. 易於集成TensorFlow.NET 與現有的 .NET 應用和庫無縫集成,使開發人員能夠在熟悉的 C# 開發環境中利用 TensorFlow 的能力。
  4. 模型的可移植性TensorFlow.NET 允許開發人員導入預訓練的 TensorFlow 模型並導出訓練後的模型,以便在其他基於 TensorFlow 的環境中進行推理,如 Python 或移動設備。
  5. 靈活性和可擴展性TensorFlow.NET 提供了用 C# 語言特性自定義和擴展機器學習模型的靈活性,如用於數據操作的 LINQ(語言集成查詢)和用於模型組合的函數編程範式。
  6. 社區支持和文檔TensorFlow.NET 得益於活躍的貢獻者社區,他們提供文檔、教程和示例,以幫助開發人員在 C# 世界中使用 TensorFlow 開始機器學習。

使用 TensorFlow.NET 的實際示例

讓我們探索一些可以使用 TensorFlow.NET 在 C# 中創建和部署機器學習模型的實際場景:

  1. 加載和使用預訓練模型

    // 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
  2. 訓練自定義模型

    // 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);
    ' Create a neural network model using TensorFlow.NET APIs
    Dim input As New Input(Shape.Scalar)
    Dim output = (New Dense(1, Activation.ReLU)).Forward(input)
    ' Compile the model with loss function and optimizer algorithms
    Dim model As 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. 評估和部署

    // 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");
    ' Evaluate the trained model on test data
    Dim evaluation = model.Evaluate(x_test, y_test)
    ' Export the trained model for deployment
    model.SaveModel("trained_model.pb")
    $vbLabelText   $csharpLabel

更多 TensorFlow 的示例可以在 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);
        }
    }
}
' Use static TensorFlow
Imports Tensorflow.Binding

Namespace IronPdfDemos
	Public Class TensorFlow
		Public Shared Sub Execute()
			' Create a TensorFlow constant
			Dim hello = tf.constant("Hello, TensorFlow!")
			Console.WriteLine(hello)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

範例 Hello TensorFlow 輸出

 TensorFlow .NET (這對開發人員如何運作):圖 1 - 控制台應用輸出

使用 TensorFlow.NET 的好處

  1. 無縫集成TensorFlow.NET 將 TensorFlow 的威力帶入 .NET 生態系統,使得 C# 開發人員能夠在其應用中運用最先進的機器學習技術和演算法。
  2. 性能和可擴展性TensorFlow.NET 利用 TensorFlow 的優化執行引擎來提供高性能的機器學習計算,非常適合處理大規模數據集和複雜模型。
  3. 熟悉的開發環境TensorFlow.NET API 允許開發人員使用熟悉的 C# 語言特性和開發工具來構建和部署機器學習模型,減少採用 C# 應用中機器學習的學習曲線。
  4. 互操作性和可移植性TensorFlow.NET 促進與其他基于 TensorFlow 的環境的互操作性,使 C# 基于的机器学习模型与 Python、TensorFlow Serving、和 TensorFlow Lite 无缝集成。
  5. 社區驅動的開發TensorFlow.NET 因活躍的貢獻者和用戶社區而受益,他們提供支持、反饋和對項目的貢獻,以確保其持續增長和改進。

TensorFlow.NET 授權

它是一個開源的 Apache 授權包,可以自由使用。 有關授權的更多信息可以在 TensorFlow.NET 授權 頁面上閱讀。

介绍 IronPDF

 TensorFlow .NET (這對開發人員如何運作):圖 2 - IronPDF

IronPDF 是一個強大的 C# PDF 庫,允許開發人員從 HTML、CSS、圖像和 JavaScript 輸入直接創建、編輯和簽署 PDF。 這是一個商業級解決方案,具有高性能和低內存佔用。 以下是一些關鍵功能:

  1. HTML 到 PDF 轉換IronPDF 可以將 HTML 文件、HTML 字符串和 URL 轉換為 PDF。 例如,您可以使用 Chrome PDF 渲染器將網頁呈現為 PDF。
  2. 跨平台支持IronPDF 適用於多種 .NET 平台,包括 .NET Core、.NET Standard 和 .NET Framework。 它與 Windows、Linux 和 macOS 兼容。
  3. 編輯和簽署:您可以設置屬性、添加安全性(密碼和权限),甚至為您的 PDF 應用數字簽名。
  4. 頁面模板和設置:通過添加頁眉、頁腳和頁碼以及調整邊距來自定義您的 PDF。 IronPDF 還支持響應式佈局和自定義紙張尺寸。
  5. 標準符合性IronPDF 遵循 PDF 標準,例如 PDF/A 和 PDF/UA。 它支持 UTF-8 字符編碼並處理圖像、CSS 和字體等資產。

使用 TensorFlow.NET 和 IronPDF 生成 PDF 文檔

首先,創建 Visual Studio 項目並選擇下面的控制台應用模板。

 TensorFlow .NET (這對開發人員如何運作):圖 3 - Visual Studio 項目

提供項目名稱和位置。

 TensorFlow .NET (For Developers如何運作):圖 4 - 項目配置

在下一步中選擇所需的 .NET 版本,然後點擊創建按鈕。

從 Visual Studio Package Manager 的 NuGet 套件中安裝 IronPDF

 TensorFlow .NET (For Developers如何運作):圖 5 - TensorFlow.NET

安裝獨立用於運行模型的套件 TensorFlow.NETTensorFlow.Keras

 TensorFlow .NET (For Developers如何運作):圖 6 - 安裝包 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");
        }
    }
}
Imports IronPdf
Imports Tensorflow.Binding

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

			' Prepare HTML content for the PDF
			Dim 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>"
			Dim a = tf.constant(5)
			Dim b = tf.constant(6)
			Dim c = tf.constant(7)

			' Perform various tensor operations
			content &= "<h2>Various Tensor Operations</h2>"
			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>"

			' 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
			Dim mean = tf.reduce_mean(tf.constant( { a, b, c }))
			Dim sum = tf.reduce_sum(tf.constant( { a, b, c }))

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

			' Perform matrix multiplication
			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 &= "<h2>Matrix Multiplications</h2>"
			content &= "<p>Multiplication Result:</p>"
			content &= $"<p>product = {product.numpy()}</p>"

			' Render HTML content to PDF
			Dim pdf = renderer.RenderHtmlAsPdf(content)
			' Save PDF to file
			pdf.SaveAs("tensorflow.pdf")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

代碼說明

讓我們來拆解這段代碼片段:

  1. 導入語句

代碼以導入必要的庫開始。 具體而言:

```csharp
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.
```
  1. 即時執行

tf.enable_eager_execution(); 開啟了 TensorFlow 的即時執行模式。 在即時執行中,運算會立即評估,使得與張量的調試和交互更加簡單。

  1. 定義張量常數

代碼定義了三個張量常數:abc。 這些張量會初始化為值 5,6,和 7。

  1. 各種張量操作

進行以下張量操作:

```csharp
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.
```
  1. 訪問張量值

張量操作的結果會包含在 HTML 內容中:

```csharp
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>";
```
  1. 其他操作

代碼計算常數 [a, b, c] 的平均值和總和。

  1. 矩陣乘法

它在 matrix1matrix2 之間進行矩陣乘法並顯示結果。

  1. PDF 生成

IronPDFChromePdfRendererRenderHtmlAsPdf 用於將 HTML 字符串渲染為 PDF 文檔。

輸出

 TensorFlow .NET (這對開發人員如何運作): 圖 7 - PDF 輸出

IronPDF 許可證

IronPDF 需要許可證才能運行。 有關許可的更多信息可以在 IronPDF 許可 頁面找到。 將密鑰放在如下所示的 appSettings.json 文件中。

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

結論

總之,TensorFlow.NET 賦予 C# 開發人員使用 .NET 生態系統的多功能性和生產力來探索機器學習和人工智能的世界。 無論您是在構建智能應用程序、預測分析工具,還是自動化決策系統,TensorFlow.NET 都為 C# 中的機器學習潛力提供了一個強大且靈活的框架。 與來自 Iron SoftwareIronPDF 庫一起,開發人員可以獲得開發現代應用程序的高級技能。

常見問題解答

如何將機器學習整合到我的 C# 應用程式中?

您可以使用 TensorFlow.NET,這是一個 TensorFlow 的 .NET 綁定,可讓您在 C# 應用程式中構建、訓練和部署機器學習模型。它提供了與 TensorFlow 強大 API 完全兼容的機能。

TensorFlow.NET 的主要功能有哪些?

TensorFlow.NET 提供功能,包括與 TensorFlow API 完全兼容、高效能的計算引擎、易於整合 .NET 系統、模型可移植性和強大的社區支持。

如何在 .NET 應用程序中將 HTML 轉換為 PDF?

您可以使用 IronPDF 在 .NET 應用程式中將 HTML 轉換為 PDF。IronPDF 支援從 HTML、CSS 和 JavaScript 輸入轉換為 PDF 文件,提供跨平台兼容性和進階的 PDF 操作能力。

TensorFlow.NET 可以用於從 Python 導入模型嗎?

是的,TensorFlow.NET 支援模型的可移植性,使您能夠導入在 Python 等環境中創建的模型,並在 .NET 應用程式中使用。

結合 TensorFlow.NET 與 IronPDF 的潛力是什麼?

結合 TensorFlow.NET 與 IronPDF 可讓開發者構建智能應用程式,可以執行複雜的機器學習計算,並以格式良好的 PDF 文件呈現結果,增強文件和報告流程。

TensorFlow.NET 適用於跨平台開發嗎?

是的,TensorFlow.NET 可在跨平台的 .NET 環境中使用,允許開發人員構建與各種作業系統相容的應用程式。

如何在 C# 應用程式中編輯和簽署 PDF?

IronPDF 提供在 C# 應用程式中編輯和簽署 PDF 文件的功能,允許強大的 PDF 操作和管理。

開發者使用 TensorFlow.NET 可獲得何種支持?

TensorFlow.NET 擁有強大的社區支持和詳盡的文件,讓開發者更容易找到資源和範例,以協助其開發過程。

TensorFlow.NET 如何增強 C# 開發環境?

TensorFlow.NET 通過整合 TensorFlow 的機器學習能力增強了 C# 開發環境,允許開發人員在不離開 .NET 生態系統的情況下充分利用 TensorFlow 的強大功能。

開發者在哪裡可以找到使用 IronPDF 的實際範例?

開發者可以在 IronPDF 文件頁面和各種線上資源、以及專於 .NET PDF 操作的社區論壇中找到使用 IronPDF 的實際範例。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。