
TensorFlow .NET (jak to działa dla programistów)
Uczenie maszynowe (ML) zrewolucjonizowało różne branże, od opieki zdrowotnej po finanse, umożliwiając inteligentne podejmowanie decyzji i automatyzację. TensorFlow, otwarta platforma Google do uczenia maszynowego i głębokiego uczenia się, znajduje się w czołówce tej rewolucji. Dzięki TensorFlow.NET, deweloperzy .NET mogą korzystać z mocy TensorFlow w środowisku C#. W tym artykule zbadamy TensorFlow.NET, jego funkcje, korzyści i praktyczne zastosowania w rozwoju C#. Poznamy także bibliotekę do generowania PDF o nazwie IronPDF od Iron Software na podstawie praktycznego przykładu.
Zrozumienie TensorFlow.NET
TensorFlow.NET to wiązanie .NET dla TensorFlow, które pozwala deweloperom na korzystanie z funkcjonalności TensorFlow bezpośrednio w warstwach aplikacji C# i .NET. Opracowany przez społeczność i utrzymywany przez organizację SciSharp, TensorFlow.NET zapewnia płynną integrację możliwości maszynowego uczenia się oraz sieci neuronowych TensorFlow z wszechstronnością platformy .NET. Umożliwia programistom C# tworzenie sieci neuronowych, trenowanie modeli oraz wdrażanie modeli ML przy użyciu rozbudowanych interfejsów API i narzędzi systemu TensorFlow.
Najważniejsze cechy TensorFlow.NET
- Zgodność z TensorFlow:
TensorFlow.NETzapewnia pełną zgodność z API i operacjami TensorFlow, w tym manipulacją tensorem, warstwami sieci neuronowych, funkcjami strat, optymalizatorami i narzędziami do wstępnego przetwarzania danych i ewaluacji. - Wysoka wydajność:
TensorFlow.NETwykorzystuje wydajny silnik wykonawczy TensorFlow oraz zoptymalizowane jądra, aby dostarczyć wysokowydajność wnioskowania i szkolenia maszynowego na CPU i GPU. - Łatwa integracja:
TensorFlow.NETpłynnie integruje się z istniejącymi aplikacjami i bibliotekami .NET, umożliwiając deweloperom wykorzystanie możliwości TensorFlow bez opuszczania znajomego środowiska rozwoju C#. - Przenośność modeli:
TensorFlow.NETumożliwia deweloperom importowanie przetrenowanych modeli TensorFlow i eksportowanie przeszkolonych modeli do wnioskowania w innych środowiskach bazujących na TensorFlow, takich jak Python lub urządzenia mobilne. - Elastyczność i rozszerzalność:
TensorFlow.NETzapewnia elastyczność w dostosowywaniu i rozszerzaniu modeli maszynowego uczenia się poprzez wykorzystanie funkcji języka C#, takich jak LINQ (językowa zintegrowana kwerenda) do manipulacji danymi i paradygmaty programowania funkcyjnego do tworzenia modeli. - Wsparcie społeczności i dokumentacja:
TensorFlow.NETczerpie korzyści z aktywnej społeczności współtwórców, którzy dostarczają dokumentacji, samouczków i przykładów, aby pomóc deweloperom rozpocząć pracę z maszynowym uczeniem się w świecie C# za pomocą TensorFlow.
Praktyczne przykłady z wykorzystaniem TensorFlow.NET
Przyjrzyjmy się kilku praktycznym scenariuszom, w których TensorFlow.NET może być używany do budowy i wdrażania modeli maszynowego uczenia się w C#:
-
Ładowanie i używanie wstępnie wytrenowanych modeli:
// 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) -
Trenowanie modeli niestandardowych:
// 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) -
Ocena i wdrożenie:
// 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")
Więcej przykładów TensorFlow można znaleźć na stronie Przykłady 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
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 NamespacePrzykładowy wynik Hello TensorFlow

Korzyści wynikające z używania TensorFlow.NET
- Płynna integracja:
TensorFlow.NETwprowadza moc TensorFlow do ekosystemu .NET, umożliwiając deweloperom C# wykorzystywanie najnowocześniejszych technik i algorytmów maszynowego uczenia się w swoich aplikacjach. - Wydajność i skalowalność:
TensorFlow.NETwykorzystuje zoptymalizowany silnik wykonawczy TensorFlow, aby dostarczać wydajnych obliczeń maszynowego uczenia się, co sprawia, że jest odpowiedni do obsługi dużych zbiorów danych i złożonych modeli. - Znajome środowisko deweloperskie:
TensorFlow.NETAPI pozwala deweloperom na tworzenie i wdrażanie modeli maszynowego uczenia się przy użyciu znajomych funkcji języka C# i narzędzi deweloperskich, co zmniejsza krzywą uczenia się przy wdrażaniu maszynowego uczenia się w aplikacjach C#. - Interoperacyjność i przenośność:
TensorFlow.NETułatwia współdziałanie z innymi środowiskami bazującymi na TensorFlow, umożliwiając płynną integrację modeli maszynowego uczenia się bazujących na C# z Python, TensorFlow Serving i TensorFlow Lite. - Rozwój kierowany przez społeczność:
TensorFlow.NETkorzysta z aktywnej społeczności współtwórców i użytkowników, którzy dostarczają wsparcia, opinii i wkładów do projektu, zapewniając jego nieustanny rozwój i doskonalenie.
Licencja TensorFlow.NET
Jest to pakiet typu open source na licencji Apache, z którego można korzystać bezpłatnie. Więcej informacji na temat licencji można znaleźć na stronie Licencja TensorFlow.NET.
Przedstawiamy IronPDF

IronPDF to potężna biblioteka PDF w C#, która pozwala deweloperom tworzyć, edytować i podpisywać dokumenty PDF bezpośrednio z HTML, CSS, obrazów i wejść JavaScript. Jest to rozwiązanie klasy komercyjnej o wysokiej wydajności i niewielkim zużyciu pamięci. Oto kilka kluczowych funkcji:
- Konwersja HTML do PDF:
IronPDFmoże konwertować pliki HTML, ciągi HTML i adresy URL do PDF. Na przykład można wyrenderować stronę internetową jako plik PDF za pomocą renderera PDF przeglądarki Chrome. - Wsparcie dla różnych platform:
IronPDFdziała na różnych platformach .NET, w tym .NET Core, .NET Standard i .NET Framework. Jest kompatybilny z systemami Windows, Linux i macOS. - Edycja i podpisywanie: Możesz ustawiać właściwości, dodawać zabezpieczenia (hasła i uprawnienia), a nawet stosować podpisy cyfrowe w swoich plikach PDF.
- Szablony stron i ustawienia: Dostosuj swoje pliki PDF, dodając nagłówki, stopki i numery stron oraz dostosowując marginesy.
IronPDFobsługuje także responsywne układy i niestandardowe rozmiary papieru. - Zgodność ze standardami:
IronPDFprzestrzega standardów PDF, takich jak PDF/A i PDF/UA. Obsługuje kodowanie znaków UTF-8 oraz pliki takie jak obrazy, CSS i czcionki.
Generowanie dokumentów PDF przy użyciu TensorFlow.NET i IronPDF
Najpierw utwórz projekt w Visual Studio i wybierz poniższy szablon aplikacji konsolowej.

Podaj nazwę projektu i lokalizację.

W następnym kroku wybierz wymaganą wersję .NET i kliknij przycisk Utwórz.
Zainstaluj IronPDF z pakietu NuGet za pomocą Menedżera pakietów Visual Studio.

Zainstaluj pakiety TensorFlow.NET i TensorFlow.Keras, niezależny pakiet używany do uruchamiania modeli.

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 NamespaceWyjaśnienie kodu
Przeanalizujmy fragment kodu:
-
Instrukcje importu:
Kod rozpoczyna się od zaimportowania niezbędnych bibliotek. W szczególności:
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.Imports IronPdf ' This imports the IronPDF package, which is used for working with PDF files. Imports Tensorflow.Binding ' This imports the TensorFlow library, specifically the .NET standard binding. -
Wykonanie z wyprzedzeniem:
Linia
tf.enable_eager_execution();umożliwia tryb natychmiastowego wykonania TensorFlow. W trybie wykonania z wyprzedzeniem operacje są oceniane natychmiast, co ułatwia debugowanie i interakcję z tensorami. -
Zdefiniuj stałe tensorowe:
Kod definiuje trzy stałe tensorów:
a,bic. Są one inicjowane odpowiednio wartościami 5, 6 i 7. -
Różne operacje na tensorach:
Wykonuje się następujące operacje tensorowe:
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.Dim add = tf.add(a, b) ' Adds a and b. Dim [sub] = tf.subtract(a, b) ' Subtracts b from a. Dim mul = tf.multiply(a, b) ' Multiplies a and b. Dim div = tf.divide(a, b) ' Divides a by b. -
Dostęp do wartości tensorów:
Wyniki operacji tensorowych są zawarte w treści 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>" -
Dodatkowe operacje:
Kod oblicza średnią i sumę stałych
[a, b, c]. -
Mnożenie macierzy:
Dokonuje mnożenia macierzy pomiędzy
matrix1imatrix2i wyświetla wynik. -
Generowanie plików PDF:
ChromePdfRendereriRenderHtmlAsPdfzIronPDFsą używane do renderowania ciągu HTML w dokumencie PDF.
Wynik

Licencja IronPDF
IronPDF wymaga licencji do działania. Więcej informacji na temat licencji można znaleźć na stronie Licencjonowanie IronPDF. Umieść klucz w pliku appSettings.json jak pokazano poniżej.
{
"IronPdf.License.LicenseKey": "The Key Here"
}
Wnioski
Podsumowując, TensorFlow.NET umożliwia deweloperom C# eksplorację świata maszynowego uczenia się i sztucznej inteligencji z wszechstronnością i produktywnością ekosystemu .NET. Niezależnie od tego, czy tworzysz inteligentne aplikacje, narzędzia do analiz predykcyjnych, czy systemy automatycznego podejmowania decyzji, TensorFlow.NET zapewnia potężny i elastyczny framework do uwalniania potencjału maszynowego uczenia się w C#. Razem z biblioteką IronPDF od Iron Software, deweloperzy mogą zdobyć zaawansowane umiejętności do tworzenia nowoczesnych aplikacji.

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.
Powiązane artykuły


