الإنجليزية | 中文
مهم
يسعدنا أن عملنا على Tensorflow.net قد اجتذب العديد من المستخدمين. ومع ذلك، في هذا الوقت، لا يتوفر أي من المشرفين الرئيسيين على هذا الريبو للميزات الجديدة وإصلاح الأخطاء. لن نرفض العلاقات العامة وسنساعد في مراجعتها.
إذا كنت ترغب في أن تكون مساهمًا أو مشرفًا على موقع Tensorflow.net، فنحن نود مساعدتك في البدء.
نشعر بالأسف لذلك وسنستأنف صيانة هذا المشروع بمجرد أن يتوفر لدى أحدنا النطاق الترددي المناسب له.
الفرع الرئيسي وv0.100.x يتوافقان مع Tensorflow v2.10، والفرع v0.6x من Tensorflow v2.6، وv0.15-tensorflow1.15 من Tensorflow1.15. يرجى إضافة https://www.myget.org/F/scisharp/api/v3/index.json
إلى مصدر nuget لاستخدام الإصدار الليلي.
تتمثل مهمة SciSharp STACK
في جلب تكنولوجيا علوم البيانات الشائعة إلى عالم .NET وتزويد مطوري .NET بمجموعة أدوات قوية للتعلم الآلي دون إعادة اختراع العجلة. نظرًا لأن واجهات برمجة التطبيقات تظل متشابهة قدر الإمكان، يمكنك على الفور تعديل أي كود TensorFlow موجود في C# أو F# بمنحنى تعليمي صفري. ألقِ نظرة على صورة المقارنة وشاهد مدى سهولة ترجمة نص TensorFlow/Python إلى برنامج C# باستخدام TensorFlow.NET.
تسمح فلسفة SciSharp بترحيل عدد كبير من أكواد التعلم الآلي المكتوبة بلغة Python بسرعة إلى .NET، مما يتيح لمطوري .NET استخدام نماذج التعلم الآلي المتطورة والوصول إلى عدد كبير من موارد TensorFlow التي لن تكون ممكنة بدون هذا المشروع.
بالمقارنة مع المشاريع الأخرى، على سبيل المثال TensorFlowSharp الذي يوفر فقط واجهة برمجة تطبيقات C++ منخفضة المستوى الخاصة بـ TensorFlow ويمكنه فقط تشغيل النماذج التي تم إنشاؤها باستخدام Python، فإن Tensorflow.NET يجعل من الممكن بناء مسار التدريب والاستدلال باستخدام C# وF# الخالصين. علاوة على ذلك، يوفر Tensorflow.NET ربطًا لـ Tensorflow.Keras لتسهيل نقل التعليمات البرمجية الخاصة بك من python إلى .NET.
تأخذ ML.NET أيضًا Tensorflow.NET كأحد الواجهات الخلفية لتدريب نموذجك واستنتاجه، مما يوفر تكاملًا أفضل مع .NET.
مقدمة وأمثلة بسيطة: مستندات Tensorflow.NET
توثيق تفصيلي: الدليل النهائي لـ Tensorflow.NET
أمثلة: أمثلة TensorFlow.NET
استكشاف أخطاء تشغيل المثال أو التثبيت وإصلاحها: الأسئلة الشائعة حول Tensorflow.NET
يمكنك البحث عن اسم الحزمة في NuGet Manager، أو استخدام الأوامر أدناه في وحدة تحكم مدير الحزم.
يحتوي التثبيت على جزأين، الأول هو الجسم الرئيسي:
# ## Install Tensorflow.NET
PM > Install-Package TensorFlow.NET
# ## Install Tensorflow.Keras
PM > Install-Package TensorFlow.Keras
الجزء الثاني هو جزء دعم الحوسبة. هناك حاجة إلى واحدة فقط من الحزم التالية، اعتمادًا على جهازك ونظامك.
### CPU version for Windows and Linux
PM> Install-Package SciSharp.TensorFlow.Redist
### CPU version for MacOS
PM> Install-Package SciSharp.TensorFlow.Redist-OSX
### GPU version for Windows (CUDA and cuDNN are required)
PM> Install-Package SciSharp.TensorFlow.Redist-Windows-GPU
### GPU version for Linux (CUDA and cuDNN are required)
PM> Install-Package SciSharp.TensorFlow.Redist-Linux-GPU
تم تقديم مثالين بسيطين هنا لتقديم الاستخدام الأساسي لـ Tensorflow.NET. كما ترون، من السهل كتابة كود C# تمامًا مثل ذلك الموجود في بايثون.
Eager
using static Tensorflow . Binding ;
using static Tensorflow . KerasApi ;
using Tensorflow ;
using Tensorflow . NumPy ;
// Parameters
var training_steps = 1000 ;
var learning_rate = 0.01f ;
var display_step = 100 ;
// Sample data
var X = np . array ( 3.3f , 4.4f , 5.5f , 6.71f , 6.93f , 4.168f , 9.779f , 6.182f , 7.59f , 2.167f ,
7.042f , 10.791f , 5.313f , 7.997f , 5.654f , 9.27f , 3.1f ) ;
var Y = np . array ( 1.7f , 2.76f , 2.09f , 3.19f , 1.694f , 1.573f , 3.366f , 2.596f , 2.53f , 1.221f ,
2.827f , 3.465f , 1.65f , 2.904f , 2.42f , 2.94f , 1.3f ) ;
var n_samples = X . shape [ 0 ] ;
// We can set a fixed init value in order to demo
var W = tf . Variable ( - 0.06f , name : " weight " ) ;
var b = tf . Variable ( - 0.73f , name : " bias " ) ;
var optimizer = keras . optimizers . SGD ( learning_rate ) ;
// Run training for the given number of steps.
foreach ( var step in range ( 1 , training_steps + 1 ) )
{
// Run the optimization to update W and b values.
// Wrap computation inside a GradientTape for automatic differentiation.
using var g = tf . GradientTape ( ) ;
// Linear regression (Wx + b).
var pred = W * X + b ;
// Mean square error.
var loss = tf . reduce_sum ( tf . pow ( pred - Y , 2 ) ) / ( 2 * n_samples ) ;
// should stop recording
// Compute gradients.
var gradients = g . gradient ( loss , ( W , b ) ) ;
// Update W and b following gradients.
optimizer . apply_gradients ( zip ( gradients , ( W , b ) ) ) ;
if ( step % display_step == 0 )
{
pred = W * X + b ;
loss = tf . reduce_sum ( tf . pow ( pred - Y , 2 ) ) / ( 2 * n_samples ) ;
print ( $" step: { step } , loss: { loss . numpy ( ) } , W: { W . numpy ( ) } , b: { b . numpy ( ) } " ) ;
}
}
قم بتشغيل هذا المثال في Jupyter Notebook.
ResNet
في واجهة برمجة تطبيقات Keras
الوظيفية using static Tensorflow . Binding ;
using static Tensorflow . KerasApi ;
using Tensorflow ;
using Tensorflow . NumPy ;
var layers = keras . layers ;
// input layer
var inputs = keras . Input ( shape : ( 32 , 32 , 3 ) , name : " img " ) ;
// convolutional layer
var x = layers . Conv2D ( 32 , 3 , activation : " relu " ) . Apply ( inputs ) ;
x = layers . Conv2D ( 64 , 3 , activation : " relu " ) . Apply ( x ) ;
var block_1_output = layers . MaxPooling2D ( 3 ) . Apply ( x ) ;
x = layers . Conv2D ( 64 , 3 , activation : " relu " , padding : " same " ) . Apply ( block_1_output ) ;
x = layers . Conv2D ( 64 , 3 , activation : " relu " , padding : " same " ) . Apply ( x ) ;
var block_2_output = layers . Add ( ) . Apply ( new Tensors ( x , block_1_output ) ) ;
x = layers . Conv2D ( 64 , 3 , activation : " relu " , padding : " same " ) . Apply ( block_2_output ) ;
x = layers . Conv2D ( 64 , 3 , activation : " relu " , padding : " same " ) . Apply ( x ) ;
var block_3_output = layers . Add ( ) . Apply ( new Tensors ( x , block_2_output ) ) ;
x = layers . Conv2D ( 64 , 3 , activation : " relu " ) . Apply ( block_3_output ) ;
x = layers . GlobalAveragePooling2D ( ) . Apply ( x ) ;
x = layers . Dense ( 256 , activation : " relu " ) . Apply ( x ) ;
x = layers . Dropout ( 0.5f ) . Apply ( x ) ;
// output layer
var outputs = layers . Dense ( 10 ) . Apply ( x ) ;
// build keras model
var model = keras . Model ( inputs , outputs , name : " toy_resnet " ) ;
model . summary ( ) ;
// compile keras model in tensorflow static graph
model . compile ( optimizer : keras . optimizers . RMSprop ( 1e-3f ) ,
loss : keras . losses . SparseCategoricalCrossentropy ( from_logits : true ) ,
metrics : new [ ] { " acc " } ) ;
// prepare dataset
var ( ( x_train , y_train ) , ( x_test , y_test ) ) = keras . datasets . cifar10 . load_data ( ) ;
// normalize the input
x_train = x_train / 255.0f ;
// training
model . fit ( x_train [ new Slice ( 0 , 2000 ) ] , y_train [ new Slice ( 0 , 2000 ) ] ,
batch_size : 64 ,
epochs : 10 ,
validation_split : 0.2f ) ;
// save the model
model . save ( " ./toy_resnet_model " ) ;
مثال F# للانحدار الخطي متاح هنا.
يمكن العثور على المزيد من الأمثلة المتقدمة في أمثلة TensorFlow.NET.
إصدارات TensorFlow.NET | تنسورفلو 1.14، كودا 10.0 | تنسورفلو 1.15، كودا 10.0 | تنسورفلو 2.3، كودا 10.1 | تنسورفلو 2.4، كودا 11 | تنسورفلو 2.7، كودا 11 | تنسورفلو 2.10، كودا 11 |
---|---|---|---|---|---|---|
tf.net 0.10x, tf.keras 0.10 | س | |||||
tf.net 0.7x, tf.keras 0.7 | س | |||||
tf.net 0.4x, tf.keras 0.5 | س | |||||
tf.net 0.3x, tf.keras 0.4 | س | |||||
tf.net 0.2x | س | س | ||||
تف.نت 0.15 | س | س | ||||
تف.نت 0.14 | س |
tf.net 0.4x -> tf native 2.4
tf.net 0.6x -> tf native 2.6
tf.net 0.7x -> tf native 2.7
tf.net 0.10x -> tf native 2.10
...
هل ترغب في المساهمة في أحد أهم المشاريع في مجال التعلم الآلي؟ هل تريد أن تعرف كيف يقوم Tensorflow بإنشاء الرسم البياني الحسابي بطريقة سحرية؟
نحن نقدر كل مساهمة مهما كانت صغيرة! هناك مهام للمبتدئين والخبراء على حد سواء، إذا قام كل شخص بمهمة صغيرة فقط فإن مجموع المساهمات سيكون ضخمًا.
أنت تستطيع:
أفضل طريقة لمعرفة سبب فشل اختبار الوحدة هي القيام بخطوة واحدة في لغة C# أو F# ولغة Python المقابلة لها في نفس الوقت لمعرفة أين ينحسر تدفق التنفيذ أو حيث تظهر المتغيرات قيمًا مختلفة. تتيح لك بيئة تطوير Python الجيدة مثل PyCharm خطوة واحدة إلى كود مكتبة Tensorflow.
أضف SciSharp/TensorFlow.NET كالمنبع إلى الريبو المحلي الخاص بك ...
git remote add upstream [email protected]:SciSharp/TensorFlow.NET.git
يرجى التأكد من تحديث الشوكة الخاصة بك عن طريق السحب بانتظام من المنبع.
git pull upstream master
قم بشراء كتابنا لجعل المشروع مفتوح المصدر مستدامًا مع TensorFlow.NET
انضم إلى محادثتنا على Discord أو Gitter.
تابعونا على تويتر، الفيسبوك، ميديوم، ينكدين.
يعد TensorFlow.NET جزءًا من SciSharp STACK