Python TensorFlow Keras: الخطوات التسع الرئيسية للانتقال من الصفر إلى التشغيل
بايثون TensorFlow Keras: الأساسيات في مقال واحد — كود حقيقي، مخططات وخطوات ملموسة، مقتطفات من دورة مكونة من 34 درسًا.
يمكن للجميع تعلم Python TensorFlow Keras — بشرط اتباع الخطوات بالترتيب الصحيح. لقد لخصنا دورة كاملة من 34 درسًا في مسار واضح، مع أكثر مقتطفات الكود فائدة.
- المقدمة والتثبيت
- أساسيات TensorFlow
- Keras Sequential API
- الشبكة الكثيفة MLP
- الشبكات العصبية التلافيفية
لماذا ومتى نستخدم التعلم بالنقل
الفكرة
بدلًا من تدريب نموذج from scratch (يكلف أيامًا ويحتاج ملايين الصور)، نأخذ نموذجًا مدربًا مسبقًا على ImageNet (1.4M صورة، 1000 فئة) ونكيفه.
لماذا يعمل ذلك؟
الاستراتيجيتان الرئيسيتان
| الاستراتيجية | متى | كيف |
|---|---|---|
| Feature extraction | مجموعة بيانات صغيرة (<1000) | تجميد القاعدة، تدريب رأس جديد |
| Fine-tuning | مجموعة بيانات متوسطة (1k-10k) | إلغاء تجميد الطبقات الأخيرة |
النماذج المدربة مسبقًا الشائعة
| النموذج | المجال | الحجم |
|---|---|---|
| MobileNetV2 / V3 | الصور، الهواتف | 3-5 MB |
| EfficientNet B0-B7 | الصور، أعلى دقة | 20-200 MB |
| ResNet50 / 152 | الصور، الكلاسيكي | 100-200 MB |
| VGG16 / 19 | الصور، القديم | 500 MB+ |
| BERT | NLP | 400 MB |
| DistilBERT | NLP سريع | 250 MB |
تحميل نموذج مدرب مسبقًا
from tensorflow.keras.applications import MobileNetV2 base = MobileNetV2( input_shape=(224, 224, 3), include_top=False, # إزالة رأس ImageNet weights="imagenet" ) base.trainable = False # تجميد الأوزان print(base.summary())
بناء النموذج الجديد
from tensorflow.keras import models, layers n_classes = 5 # فئاتك model = models.Sequential([ layers.Input(shape=(224, 224, 3)), # المعالجة المسبقة الخاصة بالنموذج tf.keras.applications.mobilenet_v2.preprocess_input, # القاعدة المجمدة base, # رأس جديد layers.GlobalAveragePooling2D(), layers.Dropout(0.3), layers.Dense(n_classes, activation="softmax") ]) model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
المعالجة المسبقة حسب النموذج
| MobileNet | preprocess_input : [-1, 1] |
| ResNet | طرح متوسط ImageNet |
| EfficientNet | preprocess_input : [0, 255] |
متى نستخدم التعلم بالنقل
نعم
لا
الملخص
- التعلم بالنقل = إعادة استخدام نموذج مدرب مسبقًا
- استخراج الميزات إذا كانت البيانات قليلة
- الضبط الدقيق إذا كانت مجموعة البيانات متوسطة
- طبق دائمًا المعالجة المسبقة للنموذج
- tf.keras.applications = نماذج جاهزة
الخطوة التالية: الجزء 2 — الضبط الدقيق لـ MobileNet
ما هو التعلم العميق؟
التعريف
التعلم العميق هو فرع فرعي من التعلم الآلي يستخدم شبكات عصبية عميقة (عدة طبقات مخفية) لتعلم تمثيلات هرمية للبيانات.
التعلم الآلي التقليدي مقابل التعلم العميق
| الجانب | التعلم الآلي التقليدي | التعلم العميق |
|---|---|---|
| البيانات | مئات إلى آلاف | آلاف إلى ملايين |
| الميزات | يدوية (هندسة) | تُتعلم تلقائيًا |
| العتاد | CPU يكفي | GPU/TPU موصى به |
| وقت التدريب | ثوانٍ إلى دقائق | ساعات إلى أيام |
| قابلية التفسير | جيدة | ضعيفة (صندوق أسود) |
| حالات الاستخدام | جدولية | صور، صوت، نص |
خلية عصبية اصطناعية
# الخرج = تفعيل(مجموع(الأوزان * المدخلات) + التحيز) y = activation(w1*x1 + w2*x2 + ... + w_n*x_n + b)
عدة خلايا عصبية متوازية = طبقة. عدة طبقات = شبكة عميقة.
تشريح شبكة كثيفة
Input (28x28=784) | v الطبقة المخفية 1 (128 خلية عصبية، ReLU) | v الطبقة المخفية 2 (64 خلية عصبية، ReLU) | v طبقة الخرج (10 خلايا عصبية، Softmax) | v احتمالات الفئات العشر
المعماريات الرئيسية
MLP (كثيفة)
جدولية، تصنيف بسيط. أساس التعلم العميق.
CNN (تلافيفية)
الصور. تكتشف الأنماط المحلية عبر التلافيف.
RNN / LSTM / GRU
التسلسلات: نص، صوت، سلاسل زمنية.
Transformers
NLP الحديث (BERT, GPT). آلية الانتباه.
متى نستخدم التعلم العميق؟
- الصور، الصوت، الفيديو، النص
- كمية كبيرة من البيانات (10k+ مثال)
- البحث عن أداء أقصى
- أنماط معقدة غير خطية
- بيانات جدولية < 10k سطر (يفضل GBM)
- قابلية التفسير حرجة
- لا يوجد GPU متاح
- مشكلة بسيطة قابلة للفصل الخطي
TensorFlow مقابل PyTorch
| TensorFlow / Keras | جاهز للإنتاج، نشر سهل، الهواتف (TFLite) |
| PyTorch | البحث، أكثر pythonic، مهيمن في NLP |
| JAX | أداء خام، داخلي في Google |
الملخص
- التعلم العميق = شبكات عميقة تتعلم الميزات بنفسها
- ممتاز للصور، الصوت، النص
- يحتاج GPU وكمية كبيرة من البيانات
- 4 عائلات: MLP، CNN، RNN، Transformer
- TensorFlow + Keras = جاهز للإنتاج
API FastAPI + نشر Docker
مشروع نهائي • FastAPI • Docker • إنتاج
هيكل المشروع
mask-api/ âââ app/ â âââ main.py # FastAPI â âââ mask_final.keras # النموذج â âââ __init__.py âââ requirements.txt âââ Dockerfile âââ README.md
requirements.txt
fastapi==0.109.0 uvicorn[standard]==0.27.0 tensorflow==2.16.1 pillow==10.2.0 python-multipart==0.0.6
app/main.py
from fastapi import FastAPI, UploadFile, File, HTTPException from fastapi.responses import JSONResponse import tensorflow as tf import numpy as np from PIL import Image import io app = FastAPI(title="Face Mask Detection", version="1.0") model = tf.keras.models.load_model("app/mask_final.keras") LABELS = ["with_mask", "without_mask"] @app.get("/") def root(): return {"service": "face-mask-detection", "version": "1.0"} @app.get("/health") def health(): return {"status": "ok", "model_loaded": True} @app.post("/predict") async def predict(file: UploadFile = File(...)): if file.content_type not in ["image/jpeg", "image/png"]: raise HTTPException(400, "Only JPEG/PNG allowed") contents = await file.read() img = Image.open(io.BytesIO(contents)).convert("RGB").resize((224, 224)) arr = np.expand_dims(np.array(img), axis=0).astype("float32") proba = float(model.predict(arr, verbose=0)[0][0]) label = LABELS[int(proba > 0.5)] confidence = proba if proba > 0.5 else 1 - proba return { "prediction": label, "confidence": round(confidence, 4), "with_mask_proba": round(1 - proba, 4), "without_mask_proba": round(proba, 4) }
الاختبار محليًا
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload # التوثيق التلقائي على http://localhost:8000/docs # اختبار curl curl -X POST "http://localhost:8000/predict" \ -F "file=@test.jpg"
Dockerfile
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app/ ./app/ EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=10s \ CMD curl -f http://localhost:8000/health || exit 1 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
البناء والتشغيل
docker build -t mask-detection:1.0 . docker run -d -p 8000:8000 --name mask-api mask-detection:1.0 # التحقق docker logs mask-api curl http://localhost:8000/health
يغطي هذا المقال المقتطفات الأكثر فائدة — الدورة الكاملة Python TensorFlow Keras (10 فصول، 34 درسًا، تمارين مصححة ومشروع نهائي) تأخذك إلى النهاية.
./acceder-au-cours-complet cours gratuit : Maîtriser Claude Codeالأسئلة الشائعة
كم من الوقت يستغرق تعلم Python TensorFlow Keras؟
هل هناك متطلبات مسبقة؟
من أين نبدأ عمليًا؟
📬 هل تريد تلقي هذا النوع من الأدلة كل أسبوع؟ اشترك مجانًا — كود حقيقي، بدون كلام فارغ.