ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
機械学習(機械学習 (ML))医療から金融まで、さまざまな業界において、インテリジェントな意思決定と自動化を可能にすることで、革命をもたらしました。 TensorFlow、Googleのオープンソース機械学習およびディープラーニングフレームワークは、この革命の最前線にいます。 TensorFlow.NET
を使用すると、.NETの開発者はC#エコシステム内でTensorFlowの力を活用できます。 この記事では、TensorFlow.NET
の機能、利点、およびC#開発における実用的な応用について探ります。 また、Iron Software
のIronPDF
というPDF生成ライブラリについて、実際の例を通して学びます。
TensorFlow.NET
は、TensorFlowの.NETバインディングであり、開発者がC#および.NETアプリケーション層内でTensorFlowの機能を直接使用できるようにします。 コミュニティによって開発され、SciSharp組織によって維持されている TensorFlow.NET
は、TensorFlowの機械学習およびニューラルネットワークの機能を.NETプラットフォームの多様性とシームレスに統合します。 C#開発者がニューラルネットワークの構築、モデルのトレーニング、またはトレーニング画像の使用、そしてTensorFlowの豊富なシステムAPIおよびツールを使用してMLモデルをデプロイすることを可能にします。
TensorFlow互換性: TensorFlow.NET
は、テンソル操作や活性化、ニューラルネットワーク層、損失関数、オプティマイザ、データの前処理および評価のためのユーティリティを含む、TensorFlowのAPIおよび操作と完全に互換性があります。
高性能: TensorFlow.NET
は、TensorFlow の効率的な計算グラフ実行エンジンと最適化されたカーネルを活用して、CPUおよびGPU上で高性能な機械学習推論とトレーニングを提供します。
簡単な統合: TensorFlow.NET
は、既存の .NET アプリケーションやライブラリとシームレスに統合され、開発者が馴染みのある C# 開発環境を離れることなく TensorFlow の機能を活用することができます。
モデルポータビリティ: TensorFlow.NET
を使用すると、開発者は事前にトレーニングされたTensorFlowモデルをインポートしたり、他のTensorFlowベースの環境(Pythonやモバイルデバイスなど)での推論に向けてトレーニングされたモデルをエクスポートしたりできます。
柔軟性と拡張性: TensorFlow.NET
は、LINQなどのC#言語の機能を使用して機械学習モデルをカスタマイズおよび拡張するための柔軟性を提供します(言語統合クエリ (言語統合クエリ (Language Integrated Query)))モデル構成のためのデータ操作と関数型プログラミングのパラダイム用。
TensorFlow.NET
には活発なコミュニティの寄稿者がいて、ドキュメント、チュートリアル、例を提供し、C#の世界でTensorFlowを使用して機械学習を始めるのを助けています。C#で機械学習モデルを構築およびデプロイするためにTensorFlow.NET
を使用できるいくつかの実用的なシナリオを見てみましょう:
// 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)
// 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
// 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
TensorFlowの他の例は、以下のサイトで見ることができます。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
サンプル Hello TensorFlow 出力
シームレスな統合: TensorFlow.NET
は TensorFlow の力を .NET エコシステムにもたらし、C# 開発者が最新の機械学習技術およびアルゴリズムをアプリケーションで活用できるようにします。
パフォーマンスとスケーラビリティ: TensorFlow.NET
は、TensorFlowの最適化された実行エンジンを活用して、高性能な機械学習計算を提供します。これにより、大規模なデータセット、テスト画像、複雑または高密度なモデルの処理に適しています。
なじみのある開発環境: TensorFlow.NET
APIを使用すると、開発者は慣れ親しんだC#言語の機能や開発ツールを使用して機械学習モデルを構築およびデプロイできます。これにより、C#アプリケーションで機械学習を採用する際の学習曲線が軽減されます。
相互運用性と移植性: TensorFlow.NET
は他のTensorFlowベースの環境との相互運用を容易にし、C#ベースの機械学習モデルとPython、TensorFlow Serving、TensorFlow Liteの間でシームレスな統合を可能にします。
TensorFlow.NET
は、サポート、フィードバック、および寄稿を提供する活発なコントリビューターとユーザーのコミュニティから恩恵を受けており、プロジェクトの継続的な成長と改善が保証されています。これは、自由に使用できるオープンソースのApacheライセンスパッケージです。 ライセンスの詳細はTensorFlow.NETライセンスページ
IronPDF
は、HTML、CSS、画像、およびJavaScript入力から直接PDFの作成、編集、署名を可能にする強力なC# PDFライブラリです。 それは高性能で低メモリフットプリントの商用グレードのソリューションです。 以下は主な機能です:
HTMLからPDFへの変換: IronPDF
は、HTMLファイル、HTML文字列、およびURLをPDFに変換できます。 例えば、Chrome PDFレンダラーを使用してウェブページをPDFとしてレンダリングすることができます。
クロスプラットフォームサポート: IronPDF
は、.NET Core、.NET Standard、および.NET Frameworkを含むさまざまな.NETプラットフォームで動作します。 Windows、Linux、およびmacOSとの互換性があります。
編集と署名: プロパティを設定し、セキュリティを追加(パスワードとパーミッション)、さらにPDFにデジタル署名を適用することもできます。
ページテンプレートと設定: ヘッダー、フッター、ページ番号を追加し、余白を調整してPDFをカスタマイズすることができます。 IronPDF
は、レスポンシブレイアウトおよびカスタム用紙サイズにも対応しています。
IronPDF
はPDF/AやPDF/UAなどのPDF標準に準拠しています。 UTF-8文字エンコーディングをサポートし、画像、CSS、フォントなどのアセットを処理します。まず、Visual Studioプロジェクトを作成し、以下のコンソールアプリテンプレートを選択してください。
プロジェクト名と場所を提供してください。
次のステップで必要な.NETバージョンを選択し、作成ボタンをクリックします。
Visual Studio パッケージ マネージャーから NuGet パッケージとして IronPDF
をインストールします。
パッケージ TensorFlow.NET
と 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
コードのスニペットを分解しましょう:
インポート文:
コードは必要なライブラリのインポートから始まります。 具体的には:
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
イーガーエクセキューション
The line tf.enable_eager_execution();
はTensorFlowのイージャーエクスキューションモードを有効にします。 イージャーエクゼキューションでは、操作が即座に評価されるため、テンソルのデバッグと対話が容易になります。
テンソル定数の定義:
このコードは、3つのテンソル定数 a
、b
、および c
を定義します。 それらはそれぞれ5、6、7の値で初期化されます。
多様なテンソル演算:
以下のテンソル操作が実行されます:
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
テンソル値へのアクセス
テンソル演算の結果は、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
例出力:
5 - 6 = -1
5 * 6 = 30
5 / 6 = 0.8333333333333334
追加操作:
定数の平均と合計を計算するコード[以下の内容を日本語に翻訳してください:
a, b, c]`.
PDF生成
ChromePdfRenderer
とRenderHtmlAsPdf
は、HTML文字列をPDFドキュメントにレンダリングするためにIronPDF
で使用されます。
「IronPDF」は実行するためにライセンスが必要です。 ライセンスに関する詳細はIronPDF ライセンシングページ 以下に示すように、キーを appSettings.json
ファイルに配置します。
{
"IronPdf.License.LicenseKey": "The Key Here"
}
結論として、TensorFlow.NET
はC#開発者がマシンラーニングや人工知能の世界を探求することを可能にし、.NETエコシステムの多様性と生産性を提供します。 知的アプリケーション、予測分析ツール、または自動意思決定システムを構築する際に、TensorFlow.NET
は、C#における機械学習の可能性を引き出すための強力で柔軟なフレームワークを提供します。 Iron SoftwareのIronPDF
ライブラリと組み合わせることで、開発者は最新のアプリケーションを開発するための高度なスキルを身につけることができます。
9つの .NET API製品 オフィス文書用