Python TensorFlow Keras: الخطوات التسع الرئيسية للانتقال من الصفر إلى التشغيل

بايثون TensorFlow Keras: الأساسيات في مقال واحد — كود حقيقي، مخططات وخطوات ملموسة، مقتطفات من دورة مكونة من 34 درسًا.

Python TensorFlow Keras: الخطوات التسع الرئيسية للانتقال من الصفر إلى التشغيل

يمكن للجميع تعلم Python TensorFlow Keras — بشرط اتباع الخطوات بالترتيب الصحيح. لقد لخصنا دورة كاملة من 34 درسًا في مسار واضح، مع أكثر مقتطفات الكود فائدة.

tl;dr
  • المقدمة والتثبيت
  • أساسيات TensorFlow
  • Keras Sequential API
  • الشبكة الكثيفة MLP
  • الشبكات العصبية التلافيفية
~$ cat ./parcours.md # Python TensorFlow Keras — 10 فصول
01
مقدمة وتثبيت
→ ما هو التعلم العميق ؟→ تثبيت TensorFlow 2.x+ 1 دروس أخرى
02
أساسيات TensorFlow
→ الموترات والعمليات→ GradientTape والتفاضل التلقائي+ 1 دروس أخرى
03
Keras Sequential API
→ Sequential — تكديس الطبقات→ Compiler — المُحسّن، الخسارة، المقاييس+ 1 دروس أخرى
04
شبكة كثيفة MLP
→ بنية MLP (الإدراك متعدد الطبقات)→ تصنيف MNIST باستخدام MLP+ 1 دروس أخرى
05
الشبكات العصبية التلافيفية
→ التلافيف والتجميع→ CNN على CIFAR-10+ 2 دروس أخرى
06
الشبكات المتكررة ومعالجة اللغة الطبيعية
→ RNN, LSTM, GRU→ التضمينات للنص+ 2 دروس أخرى
07
التعلم بالنقل
→ لماذا ومتى استخدام التعلم بالنقل→ الضبط الدقيق لـ MobileNet+ 1 دروس أخرى
08
الضبط والتحسين
→ Optimizers SGD, Adam, RMSprop→ جدولة معدل التعلم+ 2 دروس أخرى
🏁
المشروع النهائي (+ 2 فصول في الطريق)
→ تعود بمشروع ملموس وقابل للعرض

لماذا ومتى نستخدم التعلم بالنقل

NOTEالهدف — فهم كيفية إعادة استخدام النماذج المدربة مسبقًا على ImageNet لمهامك الخاصة.

الفكرة

بدلًا من تدريب نموذج from scratch (يكلف أيامًا ويحتاج ملايين الصور)، نأخذ نموذجًا مدربًا مسبقًا على ImageNet (1.4M صورة، 1000 فئة) ونكيفه.

لماذا يعمل ذلك؟

TIPالنتيجة السحرية — الوصول إلى دقة 95% على 1000 صورة مخصصة بدلًا من 70% من الصفر.

الاستراتيجيتان الرئيسيتان

الاستراتيجيةمتىكيف
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+
BERTNLP400 MB
DistilBERTNLP سريع250 MB

تحميل نموذج مدرب مسبقًا

output
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())

بناء النموذج الجديد

output
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"])

المعالجة المسبقة حسب النموذج

MobileNetpreprocess_input : [-1, 1]
ResNetطرح متوسط ImageNet
EfficientNetpreprocess_input : [0, 255]
WARNINGدائمًا طبق المعالجة المسبقة للنموذج الأصلي. بدون ذلك، الأداء ضعيف.

متى نستخدم التعلم بالنقل

نعم

لا

الملخص

NOTEللتذكر
  • التعلم بالنقل = إعادة استخدام نموذج مدرب مسبقًا
  • استخراج الميزات إذا كانت البيانات قليلة
  • الضبط الدقيق إذا كانت مجموعة البيانات متوسطة
  • طبق دائمًا المعالجة المسبقة للنموذج
  • tf.keras.applications = نماذج جاهزة

الخطوة التالية: الجزء 2 — الضبط الدقيق لـ MobileNet

ما هو التعلم العميق؟

NOTEالهدف — فهم ما يميز التعلم العميق عن التعلم الآلي التقليدي، ومتى نستخدمه.

التعريف

التعلم العميق هو فرع فرعي من التعلم الآلي يستخدم شبكات عصبية عميقة (عدة طبقات مخفية) لتعلم تمثيلات هرمية للبيانات.

التعلم الآلي التقليدي مقابل التعلم العميق

الجانبالتعلم الآلي التقليديالتعلم العميق
البياناتمئات إلى آلافآلاف إلى ملايين
الميزاتيدوية (هندسة)تُتعلم تلقائيًا
العتادCPU يكفيGPU/TPU موصى به
وقت التدريبثوانٍ إلى دقائقساعات إلى أيام
قابلية التفسيرجيدةضعيفة (صندوق أسود)
حالات الاستخدامجدوليةصور، صوت، نص

خلية عصبية اصطناعية

output
# الخرج = تفعيل(مجموع(الأوزان * المدخلات) + التحيز)
y = activation(w1*x1 + w2*x2 + ... + w_n*x_n + b)

عدة خلايا عصبية متوازية = طبقة. عدة طبقات = شبكة عميقة.

تشريح شبكة كثيفة

output
Input (28x28=784)
   |
   v
الطبقة المخفية 1 (128 خلية عصبية، ReLU)
   |
   v
الطبقة المخفية 2 (64 خلية عصبية، ReLU)
   |
   v
طبقة الخرج (10 خلايا عصبية، Softmax)
   |
   v
احتمالات الفئات العشر

المعماريات الرئيسية

MLP (كثيفة)

جدولية، تصنيف بسيط. أساس التعلم العميق.

CNN (تلافيفية)

الصور. تكتشف الأنماط المحلية عبر التلافيف.

RNN / LSTM / GRU

التسلسلات: نص، صوت، سلاسل زمنية.

Transformers

NLP الحديث (BERT, GPT). آلية الانتباه.

متى نستخدم التعلم العميق؟

TIPالحالات الجيدة
  • الصور، الصوت، الفيديو، النص
  • كمية كبيرة من البيانات (10k+ مثال)
  • البحث عن أداء أقصى
  • أنماط معقدة غير خطية
WARNINGالحالات السيئة
  • بيانات جدولية < 10k سطر (يفضل GBM)
  • قابلية التفسير حرجة
  • لا يوجد GPU متاح
  • مشكلة بسيطة قابلة للفصل الخطي

TensorFlow مقابل PyTorch

TensorFlow / Kerasجاهز للإنتاج، نشر سهل، الهواتف (TFLite)
PyTorchالبحث، أكثر pythonic، مهيمن في NLP
JAXأداء خام، داخلي في Google

الملخص

NOTEللتذكر
  • التعلم العميق = شبكات عميقة تتعلم الميزات بنفسها
  • ممتاز للصور، الصوت، النص
  • يحتاج GPU وكمية كبيرة من البيانات
  • 4 عائلات: MLP، CNN، RNN، Transformer
  • TensorFlow + Keras = جاهز للإنتاج

API FastAPI + نشر Docker

مشروع نهائي • FastAPI • Docker • إنتاج

NOTEالهدف — تقديم نموذج كشف الكمامات عبر API FastAPI، تعبئته في حاوية Docker، واختباره في الإنتاج.

هيكل المشروع

output
mask-api/
  ⓜ── app/
  │   ⓜ── main.py          # FastAPI
  │   ⓜ── mask_final.keras # النموذج
  │   └── __init__.py
  ⓜ── requirements.txt
  ⓜ── Dockerfile
  └── README.md

requirements.txt

output
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

output
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)
    }

الاختبار محليًا

output
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

output
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"]

البناء والتشغيل

output
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
va-plus-loin

يغطي هذا المقال المقتطفات الأكثر فائدة — الدورة الكاملة Python TensorFlow Keras (10 فصول، 34 درسًا، تمارين مصححة ومشروع نهائي) تأخذك إلى النهاية.

./acceder-au-cours-complet cours gratuit : Maîtriser Claude Code

الأسئلة الشائعة

كم من الوقت يستغرق تعلم Python TensorFlow Keras؟
مع تقدم منظم (10 فصول، 34 درسًا قصيرًا وعمليًا)، يمكن الوصول إلى مستوى تشغيلي في بضعة أسابيع بمعدل 30 إلى 60 دقيقة يوميًا. المهم هو تطبيق كل مفهوم فورًا.
هل هناك متطلبات مسبقة؟
تكفي أساسيات في الحوسبة. إذا كنت تعرف استخدام الطرفية وقراءة كود بسيط، فأنت جاهز.
من أين نبدأ عمليًا؟
أعد إنتاج أوامر هذا المقال، ثم تابع الدورة الكاملة Python TensorFlow Keras: تربط الـ34 درسًا بالترتيب، مع تمارين ومشروع نهائي.

📬 هل تريد تلقي هذا النوع من الأدلة كل أسبوع؟ اشترك مجانًا — كود حقيقي، بدون كلام فارغ.