تنفيذ الشكبة لتصنيف الأرقام
سوف نكتب برنامجًا يتعلم كيفية التعرف على أرقام مكتوبة بخط اليد ، باستخدام تسلسل التدرج العشوائي وبيانات تدريب MNIST. سنقوم بذلك مع برنامج بايثون قصير (2.7) ، فقط 74 سطر من الكود! أول شيء نحتاجه هو الحصول على بيانات MNIST. إذا كنت مستخدمًا لـ git ، فيمكنك الحصول على البيانات عن طريق استنساخ مستودع الشفرات لهذا الكتاب ،
https://github.com/Husseinshtia/neural-networks-and-deep-learning
بالمناسبة ، عندما وصفت بيانات MNIST في وقت سابق ، قلت أنه تم تقسيمها إلى 60،000 صورة تدريبية ، و 10000 صورة اختبار. هذا هو وصف MNIST الرسمي. في الواقع ، سنقوم بتقسيم البيانات بطريقة مختلفة قليلاً. سنترك صور الاختبار كما هي ، ولكن تقسيم تدريب MNIST المكون من 60.000 صورة إلى جزأين: مجموعة من 50000 صورة ، والتي سنستخدمها لتدريب شبكتنا العصبية ، ومجموعة منفصلة من 10000 صورة للتحقق. لن نستخدم بيانات التحقق من الصحة في هذا الفصل ، ولكن في وقت لاحق من هذا الكتاب سنجد أنه مفيد في معرفة كيفية تعيين معلمات مفرطة معينة للشبكة العصبية – مثل معدل التعلم ، وما إلى ذلك ، تم اختيارها مباشرة من خلال خوارزمية التعلم الخاصة بنا. على الرغم من أن بيانات التحقق من الصحة ليست جزءًا من مواصفات MNIST الأصلية ، إلا أن العديد من الأشخاص يستخدمون MNIST بهذه الطريقة ، ويعتبر استخدام بيانات التحقق أمرًا شائعًا في الشبكات العصبية. عندما أشير إلى “بيانات تدريب MNIST” من الآن فصاعدًا ، سأشير إلى مجموعة بيانات الصور البالغ عددها 50000 ، وليس مجموعة بيانات الصورة الأصلية البالغ عددها 60،000 * كما أشرنا سابقًا ، تستند مجموعة بيانات MNIST إلى مجموعتي بيانات تم جمعهما من NIST ، المعهد القومي الأمريكي للمعايير والتكنولوجيا. لبناء MNIST تم تجريد مجموعات بيانات NIST إلى الأسفل ووضعها في تنسيق أكثر ملاءمة بواسطة Yann LeCun و Corinna Cortes و Christopher J. C. Burges. انظر هذا الرابط لمزيد من التفاصيل. تكون مجموعة البيانات في مستودع التخزين في شكل يسهل تحميل ومعالجة بيانات MNIST في Python. حصلت على هذا الشكل المعين من البيانات من مختبر التعلم الآلي LISA في جامعة مونتريال (وصلة)
وبصرف النظر عن بيانات MNIST نحتاج أيضًا إلى مكتبة Python تسمى Numpy ، لإجراء الجبر الخطي السريع. إذا لم يكن لديك برنامج Numpy مثبتًا بالفعل ، فيمكنك الحصول عليه هنا.
اسمحوا لي أن أشرح الميزات الأساسية لرمز الشبكات العصبية ، قبل إعطاء قائمة كاملة ، أدناه. محور هو فئة شبكة ، والتي نستخدمها لتمثيل الشبكة العصبية. إليك الرمز الذي نستخدمه لتهيئة كائن الشبكة:
class Network(object): def __init__(self, sizes): self.num_layers = len(sizes) self.sizes = sizes self.biases = [np.random.randn(y, 1) for y in sizes[1:]] self.weights = [np.random.randn(y, x) for x, y in zip(sizes[:-1], sizes[1:])]
في هذا الرمز ، تحتوي أحجام القوائم على عدد الخلايا العصبية في الطبقات المعنية. لذا ، على سبيل المثال ، إذا أردنا إنشاء كائن شبكي يحتوي على 2 عصبون في الطبقة الأولى ، و 3 خلايا عصبية في الطبقة الثانية ، و 1 عصبون في الطبقة الأخيرة ، فسنقوم بذلك باستخدام الكود:
net = Network([2, 3, 1])
0 responses on "الشبكات العصبية والتعليم العميق neural network Perceptrons الجزء 18"