محتويات الدورة

PyTorch / أسس الموتر والتدرج والوحدة / الدرس 1

موترات المعالج المركزي والأنواع العددية والأشكال

أنشئ موترًا بملكية وتمثيل عددي ومعنى محاور صريحة قبل بناء نموذج.

وقت القراءة التقريبي: 5 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • التصريح بالشكل والنوع العددي والجهاز ودلالات المحاور بصورة منفصلة.
  • تمييز الإنشاء الناسخ عن إمكان مشاركة التخزين.
  • فحص الاختزال والبث بمثال معلوم غير مربع.

للواجهات الموثقة وأدلة التنفيذ نطاقان مختلفان

يستهدف المساق وثائق PyTorch 2.14 ذات الإصدار الصريح. لا توجد مكتبة torch مثبتة في بيئة المراجعة، لذلك برامج الإطار أمثلة كاملة توضيحية للمعالج المركزي بمخرجات متوقعة مشتقة ووسم runnable:false. تنفذ المرافقات المنفصلة بالمكتبة القياسية في Python 3.12.3 وتفحص حساباتها أو عقودها هي فقط. وهي لا تتحقق من سلوك PyTorch بصورة غير مباشرة. حافظ على هذا التمييز عند إعادة مثال في تثبيت محلي مدعوم. يقدم مساق التعلم العميق المفاهيمي الأسس الرياضية؛ ويشرح هذا المسار كائنات PyTorch وحالة الوحدات وأوضاع التدرج وواجهات البيانات وحدود التنفيذ الموثقة.

للموتر اختيارات تمثيل وملكية

تنشئ torch.tensor موترًا ورقياً جديداً بنسخ البيانات المقدمة، وتستنتج نوعاً عددياً ما لم تحدده صراحة. يختار المثال float64 وdevice="cpu" لإظهار هذين الافتراضين. تستطيع torch.as_tensor تجنب النسخ وحفظ تاريخ التفاضل حيث أمكن، بينما تشارك torch.from_numpy التخزين وفق شروطها الموثقة؛ ولا يستورد الدرس NumPy أو ينشئ مصفوفة منها. عامل كل باني كعقد ملكية محدد بدلاً من افتراض أن كل التحويلات تنسخ. قد تملك قيمة تطبع كعدد صحيح نوعاً عائماً، ويختلف جهاز الموتر عن شكله ومعناه العددي معاً.

حدد معنى المحاور قبل اختزالها

يمثل برنامج الإطار التوضيحي ثلاث مشاهدات بسمتين لكل منها. تعبر tuple(x.shape) عن الأطوال، بينما يفسر معنى الصفوف والسمات المعلن ما تمثله تلك الأطوال. تختزل mean(dim=0) محور المشاهدات وتبقي متوسطي السمتين. تتغير القائمة المتداخلة الأصلية بعد الإنشاء لإظهار سلوك النسخ في الباني. لا تدخل قيم عشوائية أو GPU أو نموذج أو بيانات خارجية في المثال. سجل ترتيب السمات ووحداتها خارج الموتر المجرد في شيفرة نموذج فعلية؛ فلا يكشف فحص الشكل تبادل المعاني أو مدخلاً يستخدم مقياس قياس خاطئاً.

python برنامج توضيحي للمعالج المركزي وفق وثائق PyTorch 2.14؛ لم تتوفر torch والخرج المتوقع مشتق
import torch
source = [[1.0,2.0],[3.0,4.0],[5.0,6.0]]
x = torch.tensor(source, dtype=torch.float64, device="cpu")
source[0][0] = 99.0
print(tuple(x.shape), x.dtype == torch.float64, x.device.type)
print("copied first value", x[0,0].item())
print("feature means", x.mean(dim=0).tolist())
الناتج المتوقع
(3, 2) True cpu
copied first value 1.0
feature means [3.0, 4.0]

ينسخ الباني الموثق القائمة المتداخلة المعطاة إلى موتر float64 على المعالج المركزي؛ فلا يغير تعديل القائمة الموتر. لم ينفذ هذا السلوك المتوقع في PyTorch.

استخدم مثال حساب مستقلاً غير مربع

يحسب المرافق متوسطات السمات والمشاهدات من قوائم عادية. يختلف طول ومعنى متوسطي السمات ومتوسطات المشاهدات الثلاثة، فيظهر تبديل محور عرضي. يحاذي بث PyTorch الأبعاد وفق قواعد محددة؛ ولا يعرف أن محوراً يعني الأمثلة. قد تنتج مقارنة عمود تنبؤ (B,1) بمتجه هدف (B,) نتيجة (B,B) بدلاً من أخطاء مزدوجة. افحص شكل النتيجة غير المختزلة عند حد الخسارة. قد تخفي مصفوفة اختبار مربعة خطأ نقل؛ فأدرج بعدين مختلفين للدفعة والسمات.

python مثال مرافق حتمي بالمكتبة القياسية نُفذ فعلياً
rows = [[1.0,2.0],[3.0,4.0],[5.0,6.0]]
assert len({len(row) for row in rows}) == 1
feature_means = [sum(row[j] for row in rows)/len(rows) for j in range(2)]
row_means = [sum(row)/len(row) for row in rows]
print("feature means", feature_means)
print("observation means", row_means)
print("shape", (len(rows),len(rows[0])))
الناتج المتوقع
feature means [3.0, 4.0]
observation means [1.5, 3.5, 5.5]
shape (3, 2)

يفحص المرافق حساب المحاور على قوائم معطاة. ولا يختبر إنشاء الموتر أو نوعه أو تخزينه أو بثه أو أي سلوك تنفيذي لـPyTorch.

احفظ العقود عند إضافة عمليات مريحة

تغير إعادة التشكيل تفسير مواضع التخزين وفق قواعد معلنة؛ ولا تبدل معاني محاور اعتباطية بذاتها. يعبر النقل أو تبديل المحاور عن عملية أخرى، وقد تشارك العروض التخزين الأساسي. تفحص دروس لاحقة خطوات التخزين والتجاور والتعديلات الموضعية. ابدأ بإنشاء صريح ومدخل صغير مفحوص مستقلاً قبل تحسين التحويلات أو تغيير النوع. تحقق من القيم المنتهية والأطوال المطلوبة والوحدات ذات المعنى وفق المهمة. يقدم نجاح حساب شكل اصطناعي دليلاً محلياً فقط؛ ولا يثبت صحة البيانات أو جودة نموذج متعلم أو توافق بيئة التشغيل أو أداء جهاز.

الأخطاء الشائعة وإصلاحها

استخدم موتر صحيح ظاهراً معنى خاطئاً لسمة

لماذا يحدث؟
فُحصت أطوال المحاور فقط دون الأسماء والوحدات والترتيب.
كيف تصلحه؟
تحقق من عقد المدخل الموثق إلى جانب الشكل.
كيف تتجنب تكراره؟
احفظ مدخلاً معلوماً غير مربع بمقاييس سمات متميزة.

شارك تحويل مدخل التخزين أو فقد هويته دون توقع

لماذا يحدث؟
عوملت واجهات إنشاء مختلفة باعتبارها متكافئة.
كيف تصلحه؟
اقرأ واختر سلوك النسخ أو المشاركة الموثق صراحة.
كيف تتجنب تكراره؟
اختبر الملكية منفصلة عن تساوي الأعداد في البيئة المدعومة.

قارنت خسارة كل تنبؤ بكل هدف

لماذا يحدث؟
وسع البث عموداً مقابل متجه.
كيف تصلحه؟
حاذ الأشكال المزدوجة المقصودة قبل الطرح.
كيف تتجنب تكراره؟
افحص أبعاد الخسارة قبل الاختزال والتجميع.

اختبر فهمك

1. لدفعة من خمس مشاهدات وثلاث سمات، ما الشكل الباقي بعد mean(dim=0)، وماذا يعني؟

اعرض الحل المشروح

يبقى الشكل (3,)، بمتوسط لكل سمة عبر المشاهدات الخمس. تعطي mean(dim=1) بدلاً من ذلك (5,)، أي متوسطاً عبر السمات لكل مشاهدة. قد لا يكون الأخير ذا معنى إذا اختلفت وحدات السمات الثلاث؛ فالحساب الصحيح لا يثبت ملخصاً مشروعاً.

2. لماذا لا يغير تعديل source[0][0] الموتر x في البرنامج التوضيحي؟

اعرض الحل المشروح

توثق torch.tensor نسخ البيانات المقدمة إلى موترها الجديد. لذلك يحتفظ الموتر بالواحد في ذلك الموضع بينما تضم قائمة Python تسعة وتسعين. يتعلق الاستدلال بالباني والمثال المذكورين؛ ولا تعممه على حالات مشاركة as_tensor أو from_numpy. لم ينفذ PyTorch هنا.

أهم ما تعلمته

  • الشكل والنوع والجهاز والمعنى عقود منفصلة.
  • يعتمد سلوك ملكية الباني على الواجهة.
  • يدعم الحساب المستقل الاستدلال دون ادعاء تنفيذ الإطار.

المراجع الرسمية