التعلم العميق باستخدام Keras: تدريب الشبكة العصبية باستخدام Keras [مع رمز]
نشرت: 2020-12-24Keras هي مكتبة Python توفر واجهة برمجة تطبيقات للعمل مع الشبكات العصبية وأطر عمل التعلم العميق. يوفر Keras وظائف ووحدات مفيدة للغاية عند التعامل مع تطبيقات التعلم العميق المختلفة في Python.
بنهاية هذا البرنامج التعليمي ، ستكون على دراية بما يلي:
- ما هو كراس؟
- واجهات برمجة تطبيقات Keras
- تدريب شبكة عصبية في كيراس
جدول المحتويات
ما هو كراس؟
للقيام بالتعلم العميق ، كانت المكتبة الأكثر استخدامًا في وقت سابق هي Tensorflow 1.x والتي كان من الصعب التعامل معها للمبتدئين. يتطلب الأمر الكثير من الترميز لإنشاء شبكة أساسية من طبقة واحدة. ومع ذلك ، مع Keras ، أصبحت العملية الكاملة لإنشاء بنية الشبكة العصبية ومن ثم التدريب والتتبع سهلة للغاية.
Keras هي واجهة برمجة تطبيقات عالية المستوى يمكن تشغيلها على Tensorflow و Theano و CNTK الخلفية. يمنحنا القدرة على إجراء التجارب باستخدام الشبكات العصبية باستخدام واجهة برمجة تطبيقات عالية المستوى وسهلة الاستخدام. كما أنها قادرة على العمل على وحدات المعالجة المركزية ووحدات معالجة الرسومات.
واجهات برمجة تطبيقات Keras
لدى Keras 10 وحدات مختلفة لواجهة برمجة التطبيقات تهدف إلى التعامل مع النمذجة وتدريب الشبكات العصبية. دعنا نذهب إلى كل منهم لفهم ما تقدمه كل Keras.
عارضات ازياء
توفر نماذج API وظائف لبناء شبكات عصبية معقدة عن طريق إضافة / إزالة طبقات. يمكن أن يكون النموذج إما متسلسلًا ، مما يعني أنه سيتم تكديس الطبقات بالتسلسل بإدخال وإخراج فردي. يمكن أن يكون النموذج أيضًا وظيفيًا ، بمعنى ، مع نماذج قابلة للتخصيص بالكامل. هذا هو ما يستخدم في الغالب في الصناعة.

يحتوي API أيضًا على وحدة تدريبية توفر طرقًا لتجميع النموذج جنبًا إلى جنب مع المحسن ووظيفة الخسارة ، وطريقة لتناسب النموذج ، وطريقة للتقييم والتنبؤ بالبيانات الجديدة أيضًا. علاوة على ذلك ، فإنه يحتوي أيضًا على طرق للتدريب والاختبار والتنبؤ ببيانات الدُفعة أيضًا. نماذج API لديها أيضًا حفظ النماذج وتسلسلها.
طبقات
الطبقات هي اللبنات الأساسية لأي شبكة عصبية. تقدم Layers API مجموعة كاملة من الأساليب لبناء بنية الشبكة العصبية. يحتوي Layers API على فئة Base Layer التي تحتوي على الطرق اللازمة لبناء طبقات مخصصة بأوزان ومُبدِلات مخصصة.
يحتوي على فئة Layer Activations التي تتكون من وظائف التنشيط المختلفة مثل ReLU و Sigmoid و Tanh و Softmax وما إلى ذلك. توفر فئة Layer Weight Initializers طرقًا لتهيئة الأوزان باستخدام طرق مختلفة.
وتتكون أيضًا من فئة الطبقات الأساسية التي تتكون من الفئات المطلوبة لإضافة طبقات أساسية مثل الطبقة الكثيفة وطبقة التنشيط وطبقة التضمين وما إلى ذلك. توفر فئة طبقة الالتفاف طرقًا مختلفة لإضافة أنواع مختلفة من طبقات الالتفاف. تحتوي فئة Pooling Layers على الطرق المطلوبة لأنواع مختلفة من التجميع مثل Max Pooling و Average Pooling و Global Max Pooling وتجميع المتوسط العالمي.
عمليات الاسترجاعات
عمليات الاسترجاعات هي طريقة لتتبع عملية التدريب الخاصة بالنموذج. مع تمكين رد الاتصال ، يمكن تنفيذ العديد من الإجراءات قبل أو بعد نهاية حقبة أو دفعة. مع عمليات الاسترجاعات يمكنك:
- راقب مقاييس التدريب عن طريق تسجيل المقاييس في لوحة TensorFlow
- حفظ النموذج على القرص بشكل دوري
- التوقف المبكر في حالة عدم تناقص الخسارة بشكل ملحوظ بعد عهود معينة
- عرض الحالات والإحصائيات الداخلية للنموذج أثناء التدريب
المعالجة المسبقة لمجموعة البيانات
عادة ما تكون البيانات بتنسيق خام وتقع في أدلة مرتبة وتحتاج إلى معالجة مسبقة قبل التغذية بالنموذج للتركيب. تحتوي فئة المعالجة المسبقة لبيانات الصورة على العديد من هذه الوظائف المخصصة. على سبيل المثال ، يجب أن تكون بيانات الصورة في المصفوفة الرقمية التي يمكننا استخدام الدالة img_to_array من أجلها. أو إذا كانت الصور موجودة داخل دليل ومجلدات فرعية ، فيمكننا استخدام وظيفة image_dataset_from_directory.
تحتوي واجهة برمجة التطبيقات للمعالجة المسبقة للبيانات أيضًا على فئات لبيانات السلاسل الزمنية والبيانات النصية أيضًا.
محسنون
Optimizers هي العمود الفقري لأي شبكة عصبية. تعمل كل شبكة عصبية على تحسين وظيفة الخسارة للعثور على أفضل الأوزان للتنبؤ. هناك أنواع متعددة من أدوات تحسين الأداء التي تتبع تقنيات مختلفة قليلاً للعثور على الأوزان المثلى. كل هذه المحسنات متوفرة في Optimizers API - SGD و RMSProp و Adam و Adadelta و Adagrad و Adamax و Nadal و FTRL.
خسائر
هناك حاجة إلى تحديد وظائف الخسارة عند تجميع نموذج. سيتم تحسين وظيفة الخسارة هذه بواسطة المُحسِّن الذي تم تمريره أيضًا كمعامل في طريقة الترجمة. فئات الخسارة الرئيسية الثلاثة هي: الخسائر الاحتمالية ، خسائر الانحدار ، الخسائر المفصلية.
المقاييس
يتم استخدام المقاييس في كل نموذج ML لتحديد أدائه على بيانات الاختبار. تشبه المقاييس وظائف الخسارة ، باستثناء أنها تُستخدم في بيانات الاختبار. هناك العديد من مقاييس الدقة المتاحة مثل الدقة ، والدقة الثنائية ، والدقة الفئوية ، وما إلى ذلك ، كما أنها تحتوي على مقاييس احتمالية مثل Binary Cross Entropy ، و Categorical Cross Entropy ، وما إلى ذلك. وهناك مقاييس للتحقق من الإيجابيات / السلبيات الخاطئة مثل AUC ، الدقة ، الاستدعاء ، إلخ.

بصرف النظر عن مقاييس التصنيف هذه ، فإنه يحتوي أيضًا على مقاييس الانحدار مثل متوسط الخطأ التربيعي ، خطأ مربع متوسط الجذر ، متوسط الخطأ المطلق ، إلخ.
اقرأ أيضًا: ماذا عن Keras و TensorFlow
تطبيقات Keras
تتكون فئة تطبيقات Keras من بعض النماذج المعدة مسبقًا جنبًا إلى جنب مع الأوزان المدربة مسبقًا. تُستخدم هذه النماذج المدربة مسبقًا في عملية نقل التعلم. تختلف هذه النماذج المدربة مسبقًا اعتمادًا على البنية وعدد الطبقات والأوزان القابلة للتدريب وما إلى ذلك. بعضها Xception و VGG16 و Resnet50 و MobileNet وما إلى ذلك.
تدريب شبكة عصبية مع Keras
لنفكر في مجموعة بيانات بسيطة مثل MNIST المتوفرة في فئة مجموعات البيانات في Keras. سنقوم بإنشاء شبكة عصبية تلافيفية بسيطة متسلسلة لتصنيف الصور المكتوبة بخط اليد للأرقام من 0 إلى 9.
# تحميل مجموعة البيانات من keras.datasets استيراد mnist (x_train ، y_train) ، (x_test ، y_test) = mnist.load_data () |
تطبيع مجموعة البيانات بقسمة كل بكسل على 255. أيضًا ، من الضروري تحويل الصور إلى 4 أبعاد قبل إدخالها في نموذج CNN.
x_train = x_train.astype ( 'float32' ) x_test = x_test.astype ( 'float32' ) x_train / = 255 x_test / = 255 x_train = X_train.reshape (X_train.shape [ 0 ] ، 28 ، 28 ، 1 ) x_test = X_test.reshape (X_test.shape [ 0 ] ، 28 ، 28 ، 1 ) |
نحتاج إلى تسمية ترميز الفئات قبل إدخالها إلى النموذج. سنفعل ذلك باستخدام فئة Utils في Keras.
من keras.utils استيراد to_categorical
|
الآن ، يمكننا البدء في إنشاء النموذج باستخدام API التسلسلي.
من keras.models استيراد تسلسلي من keras . _ _ _ _ _ _ _ _ _ _ _ _ :])) model.add (MaxPool2D (pool_size = ( 2 ، 2 ))) model.add (التسرب (المعدل = 0.25 )) model.add (Conv2D (عوامل التصفية = 64 ، kernel_size = ( 3 ، 3 )، التنشيط = 'relu' )) model.add (MaxPool2D (pool_size = ( 2 ، 2 ))) model.add (التسرب (المعدل = 0.25 )) model.add (تسطيح ()) model.add (كثيف ( 256 ، التنشيط = 'relu' )) model.add (التسرب (المعدل = 0.5 )) model.add (كثيف ( 10 ، التنشيط = 'softmax' )) |
في الكود أعلاه ، نعلن نموذجًا متسلسلًا ثم نضيف طبقات متعددة إليه. الطبقة التلافيفية ، تليها طبقة Max Pooling ثم طبقة التسرب للتسوية. في وقت لاحق نقوم بتسطيح الناتج باستخدام الطبقة المسطحة والطبقة الأخيرة عبارة عن طبقة كثيفة متصلة بالكامل مع 10 عقد.
بعد ذلك ، نحتاج إلى تجميعها عن طريق تمرير وظيفة الخسارة والمحسن والقياس.
model.compile ( الخسارة = 'categorical_crossentropy' ، محسن = 'adam' ، المقاييس = [ "الدقة" ] ) |
سنحتاج الآن إلى إضافة صور معززة من الصور الأصلية لزيادة مجموعة التدريب ودقة النموذج. سنفعل ذلك باستخدام وظيفة ImageDataGenerator.
من keras.preprocessing.image استيراد ImageDataGenerator datagen = ImageDataGenerator ( rotation_range = 10 ، Zoom_range = 0.1 ، width_shift_range = 0.1 ، height_shift_range = 0.1 ) |
الآن بعد أن تم تجميع النموذج وزيادة الصور ، يمكننا بدء عملية التدريب. نظرًا لأننا استخدمنا منشئ بيانات الصورة أعلاه ، فسنستخدم طريقة fit_generator بدلاً من الملاءمة فقط.

العهود = 3 حجم_الدفعة = 32 history = model.fit_generator ( datagen.flow (x_train ، y_train ، batch_size = batch_size) ، العصور = فترات ، validation_data = (x_test، y_test)، steps_per_epoch = x_train.shape [ 0 ] // batch_size |
مخرجات العملية التدريبية كالتالي:
3 الآن يتم تدريب النموذج ويمكن تقييمه من خلال تشغيله على بيانات اختبار غير مرئية.
قراءة ذات صلة: التعلم العميق والشبكات العصبية مع Keras
قبل ان تذهب
في هذا البرنامج التعليمي ، رأينا مدى جودة هيكلة Keras وجعلها سهلة لبناء شبكة عصبية معقدة. يتم الآن تغليف Keras ضمن Tensorflow 2.x مما يمنحه المزيد من الميزات. جرب المزيد من هذه الأمثلة واستكشف وظائف وميزات Keras.
إذا كنت مهتمًا بمعرفة المزيد حول التعلم الآلي ، فراجع دبلوم PG في IIIT-B & upGrad في التعلم الآلي والذكاء الاصطناعي المصمم للمهنيين العاملين ويقدم أكثر من 450 ساعة من التدريب الصارم ، وأكثر من 30 دراسة حالة ومهمة ، IIIT- حالة الخريجين B ، أكثر من 5 مشاريع تتويجا عملية ومساعدة وظيفية مع أفضل الشركات.