معاينة مختبر آمنة
التصنيف باستخدام PyTorch/TensorFlow
هذي معاينة منقّحة للقراءة فقط؛ ما فيه أي شيء يشتغل داخل الصفحة.
تعليمات المختبر
التصنيف باستخدام PyTorch/TensorFlow
طبّقوا مفاهيم الدرس في هالمختبر الموجّه.
المهمة
حلّوا مسألتي تصنيف باستخدام شبكات كاملة الاتصال ذات طبقة وحدة، وشبكات كاملة الاتصال متعددة الطبقات، باستخدام PyTorch أو TensorFlow:
- مسألة تصنيف Iris - مثال على مسألة بيانات إدخال جدولية يقدر يتعامل معها تعلم الآلة التقليدي. المطلوب تصنّفون زهور Iris إلى 3 فئات اعتمادًا على 4 معاملات رقمية.
- مسألة تصنيف أرقام MNIST المكتوبة باليد، واللي شفناها من قبل.
جرّبوا بُنى مختلفة للشبكة، وحاولوا توصلون لأفضل دقة ممكنة.
بدء الدفتر
ابدؤوا المختبر بفتح LabFrameworks.ipynb
قراءة فقط
معاينة الدفتر
Lab Frameworks
# التصنيف باستخدام PyTorch/TensorFlow
هذي مهمة المختبر من منهج الذكاء الاصطناعي للمبتدئين.
## الجزء 1: تصنيف Iris
تحتوي مجموعة البيانات Iris على 150 سجلًا موزعة على 3 فئات مختلفة من زهور Iris. وفي كل سجل 4 معاملات رقمية: طول وعرض السبلات، وطول وعرض البتلات. هذي مجموعة بيانات بسيطة ما تحتاج إن الشبكة العصبية تكون قوية.
### جلب مجموعة البيانات
مجموعة البيانات Iris مدمجة في Scikit Learn، لذلك نقدر نجيبها بسهولة:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
features = iris['data']
labels = iris['target']
class_names = iris['target_names']
feature_names = iris['feature_names']
print(f"Features: {feature_names}, Classes: {class_names}")### عرض البيانات بصريًا
في حالات كثيرة يفيدنا نعرض البيانات بصريًا ونشوف هل فئاتها قابلة للفصل؛ وهذا يعطينا مؤشر إننا نقدر نبني نموذجًا زينًا في التصنيف. وبما إن عندنا سمات قليلة، نقدر نبني سلسلة من مخططات التبعثر الثنائية 2D لكل زوج من السمات، ونلوّن نقاط كل فئة بلون مختلف. وتقدر حزمة اسمها **seaborn** تسوي هذا آليًا:
import seaborn as sns
import pandas as pd
df = pd.DataFrame(features,columns=feature_names).join(pd.DataFrame(labels,columns=['Label']))
dfsns.pairplot(df,hue='Label')### تطبيع البيانات وترميزها
عشان نجهّز البيانات لتدريب الشبكة العصبية، نحتاج نطبّع المدخلات داخل المجال [0..1]. نقدر نسوي هذا بعمليات `numpy` العادية، أو باستخدام [دوال Scikit Learn](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.normalize.html).
وبعد، لازم تحددون هل تبون ترميز التسمية المستهدفة بصيغة one-hot أو لا. يخلّيكم PyTorch وTensorFlow تمررون رقم الفئة كعدد صحيح—من 0 إلى N-1—أو كمتجه one-hot. ولما تبنون هيكل الشبكة العصبية، لازم تختارون دالة الخسارة المناسبة؛ مثل *خسارة الانتروبيا المتقاطعة الفئوية المتناثرة (sparse categorical cross-entropy)* للتمثيل الرقمي، و*خسارة الانتروبيا المتقاطعة (cross-entropy loss)* لترميز one-hot. وتقدرون تسوون ترميز one-hot [باستخدام Sklearn](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)، أو بقطعة الكود هذي:
```python
n_values = np.max(labels) + 1
labels_onehot = np.eye(n_values)[labels]
```
# Code to normalize and encode the data### تقسيم البيانات إلى تدريب واختبار
بما إن ما عندنا مجموعة البيانات منفصلة للتدريب والاختبار، نحتاج نقسّمها إلى مجموعة البيانات الخاصة بالتدريب ومجموعة البيانات الخاصة بالاختبار [باستخدام Sklearn](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html)
# Split the data### تعريف الشبكة العصبية وتدريبها
الحين أنتم جاهزين. استوردوا الإطار اللي تفضلونه، وعرّفوا الشبكة العصبية، وابدؤوا التدريب مع متابعة دقة التدريب والتحقق.
# Define the network# Train the network# Visualize train/validation accuracy graph### جرّبوا
الحين جرّبوا بُنى مختلفة للشبكة وشوفوا تأثيرها على النتيجة. جرّبوا:
1. شبكة بطبقة واحدة فيها 3 عصبونات، بعدد الفئات نفسه
1. شبكة بطبقتين وطبقة مخفية صغيرة أو متوسطة أو كبيرة
1. استخدام طبقات أكثر
تأكدوا إنكم تلاحظون فرط التكيّف لما تستخدمون نموذجًا واسعًا فيه عصبونات—ومعاملات—كثيرة.
# Experiment## الجزء 2: تدريب MNIST
تحتوي Keras وPyTorch على MNIST كمجموعة البيانات مدمجة، لذلك تقدرون تجيبونها بسطرين تقريبًا من الكود ([Keras](https://keras.io/api/datasets/mnist/)، [PyTorch](https://pytorch.org/vision/stable/datasets.html)). وتقدرون بعد تحمّلون مجموعتي التدريب والاختبار من دون ما تقسّمون البيانات يدويًا.
# Load the datasetالحين طبّقوا الخطوات اللي فوق: تأكدوا إن مجموعة البيانات مطبّعة—وغالبًا بتكون كذلك—ثم عرّفوا الشبكة العصبية ودرّبوها.
## الزبدة
1. نقدر نستخدم الشبكات العصبية في مهام تعلم الآلة التقليدية. لكنها في حالات كثيرة تكون أقوى من المطلوب وقد تسبب فرط التكيّف.
1. المهم في هالمهمة إنكم تلاحظون سلوك فرط التكيّف وتحاولون تتجنبونه.
1. مع أطر مثل Keras، يصير تدريب الشبكة العصبية مباشرًا أحيانًا. لكن لازم تفهمون وش يصير وراء الكواليس.
حذفنا المخرجات وعدّادات التشغيل والودجات والمحتوى النشط وقت الاستيراد. شغّل الدفاتر بس في بيئة خارجية تثق فيها.
سجّل تطبيقك
التسجيل اختياري، يفيدك تتذكر وش طبّقت، ولا يمنع إكمال الدورة.