الدرس 3 من 8
المصفوفات (Matrices)
لو المتجه صف واحد، المصفوفة جدول كامل.
المصفوفة = جدول
المصفوفة (Matrix) مجموعة متجهات فوق بعض. شيت Excel فيه ٤ شقق وكل شقة ليها ٣ معلومات، ده مصفوفة ٤×٣: ٤ صفوف و ٣ أعمدة. الرقمين دول اسمهم الـ shape.
💡 هنستخدم NumPyالمكتبة دي هنتعلمها بالتفصيل في المرحلة الجاية، بس هنبدأ بيها هنا لأنها مصممة للحاجات دي بالظبط. سطّبها جوه الـ venv بـ
pip install numpy.import numpy as np # Each row = one apartment: [area, rooms, floor] apartments = np.array([ [120, 3, 5], [90, 2, 1], [150, 4, 8], [75, 2, 3], ]) print("Shape:", apartments.shape) # (rows, columns) print("Second apartment:", apartments[1]) print("All areas:", apartments[:, 0]) # all rows, column 0
ضرب مصفوفة في متجه
ده أهم عملية في الـ AI كله. تخيل إنك عايز تقدّر سعر الشقة بمعادلة بسيطة: كل متر بـ ٢٠ ألف، وكل أوضة بـ ١٠٠ ألف، وكل دور بـ ١٠ آلاف. الأرقام دي اسمها weights (أوزان).
لو ضربت مصفوفة الشقق في متجه الأوزان، بتعمل dot product بين كل صف والأوزان، فبتطلع سعر كل الشقق مرة واحدة:
import numpy as np apartments = np.array([ [120, 3, 5], [90, 2, 1], [150, 4, 8], ]) weights = np.array([20_000, 100_000, 10_000]) # per m2, per room, per floor prices = apartments @ weights # @ = matrix multiplication for p in prices: print(f"{p:,} EGP")
🤖 ده بالظبط الـ Neural Networkطبقة في شبكة عصبية بتعمل نفس الحكاية: بتضرب الداتا في مصفوفة weights. الفرق الوحيد إن الموديل بيتعلم الأوزان دي لوحده من الداتا بدل ما انت تحددها. والتعلم ده هو موضوع درس الـ gradient descent.
الـ Transpose
بتقلب المصفوفة: الصفوف تبقى أعمدة والأعمدة تبقى صفوف. مصفوفة ٤×٣ تبقى ٣×٤. هتحتاجها كتير عشان تظبط الـ shapes.
import numpy as np m = np.array([[1, 2, 3], [4, 5, 6]]) print(m.shape) print(m.T) # .T = transpose print(m.T.shape)