
TINN (الشبكة العصبية الصغيرة) هي مكتبة شبكات عصبية خالية من التبعية 200 خط مكتوبة في C99.
للحصول على عرض تجريبي حول كيفية تعلم الأرقام المكتوبة باليد ، احصل على بعض بيانات التدريب:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
تتكون بيانات التدريب من أرقام مكتوبة يدويًا مكتوبة ببطء وبسرعة. يتوافق كل سطر في مجموعة البيانات مع رقم واحد مكتوب بخط اليد. كل رقم 16 × 16 بكسل في الحجم يعطي 256 مدخلات للشبكة العصبية.
في نهاية السطر 10 أرقام تشير إلى الرقم المكتوب اليد:
0: 1 0 0 0 0 0 0 0 0 0
1: 0 1 0 0 0 0 0 0 0 0
2: 0 0 1 0 0 0 0 0 0 0
3: 0 0 0 1 0 0 0 0 0 0
4: 0 0 0 0 1 0 0 0 0 0
...
9: 0 0 0 0 0 0 0 0 0 1
هذا يعطي 10 مخرجات للشبكة العصبية. سيقوم برنامج الاختبار بإخراج الدقة لكل رقم. توقع أكثر من 99 ٪ دقة للرقم الصحيح ، وأقل دقة 0.1 ٪ للأرقام الأخرى.
محمول - يعمل حيث يوجد برنامج التحويل البرمجي C99 أو C ++ 98.
التنشيط السيني.
طبقة مخفية واحدة.
لن يستخدم Tinn أبدًا أكثر من مكتبة C القياسية.
TINN رائع للأنظمة المضمنة. قم بتدريب نموذج على سطح المكتب القوي وقم بتحميله على متحكم واستخدام المحول التناظري إلى الرقمي للتنبؤ بالأحداث في الوقت الفعلي.
سيكون رمز المصدر TINN دائمًا أقل من 200 سطر. يتم حماية الوظائف الخارجة في رأس TINN مع مساحة الاسم XT التي تقف لثانوي خارجي .
يمكن بسهولة أن يكون Tinn متعدد الخيوط مع القليل من الإبداع ، لكن الفرع الرئيسي سيبقى واحدًا ملولقًا للمساعدة في التنمية للأنظمة المضمنة.
TINN لا بذرة مولد الرقم العشوائي. لا تنس أن تفعل ذلك بنفسك.
دائما خلط بيانات الإدخال الخاصة بك. خلط مرة أخرى بعد كل تكرار التدريب.
احصل على دقة تدريب أكبر من خلال تلبيس معدل التعلم الخاص بك. على سبيل المثال ، اضرب معدل التعلم الخاص بك بمقدار 0.99 كل تكرار التدريب. هذا سوف الصفر في الحد الأدنى التعلم جيد.
تين هو ممارسة في بساطتها.
TINN ليست مكتبة شبكة عصبية مميزة بالكامل مثل Kann ، أو Genann:
https://github.com/attractivechaos/kann
https://github.com/codeplea/genann
Rust: https://github.com/dvdplm/rustinn
برنامج تعليمي يستخدم Tinn nn و ctypes
مكتبة الشبكة العصبية الصغيرة في 200 سطر من الكود