اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

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

PyTorch توفر طبقة جاهزة torch.nn.Embedding لتنفيذ الـ Embeddings بسهولة.

import torch.nn as nn
import torch

بعد ذلك، إنشاء طبقة الـ Embedding باستخدام الدالة البانية nn.Embedding()، والتي تتطلب مُدخلين رئيسيين:

  1. num_embeddings: عدد الـ Embeddings المراد إنشاؤها يمثل حجم المعجم لديك بمعنى عدد الكلمات الفريدة أو عدد العناصر الفريدة.
  2. embedding_dim: أبعاد كل Embedding، أي طول المتجه الذي سيمثل كل كائن.

للتبسيط لو لديك معجم يحتوي على 10000 كلمة وترغب في تمثيل كل كلمة بمتجه ذي 100 بُعد، نكتب:

embedding_layer = nn.Embedding(num_embeddings=10000, embedding_dim=100)

ولاستخدامها يجب تمرير مؤشرات indices الكائنات التي تريد الحصول على الـ Embedding الخاصة بها، وتلك المؤشرات عبارة عن موتر Tensor من الأعداد الصحيحة.

indices = torch.tensor([5, 100, 500]) 
embeddings = embedding_layer(indices) 
print(embeddings.shape) 
print(embeddings)

من الأفضل استخدام Pre-trained Embeddings وهي مدربة مسبقًا مثل Word2Vec أو GloVe أو FastText، فهي تعلمت على كميات هائلة من النصوص، وتعتبر نقطة بداية جيدة للتدريب، خاصة لو كمية البيانات المتوفرة لديك محدودة. 

  • 0
نشر
بتاريخ 3 دقائق مضت قال Mustafa Suleiman:
  • num_embeddings: عدد الـ Embeddings المراد إنشاؤها يمثل حجم المعجم لديك بمعنى عدد الكلمات الفريدة أو عدد العناصر الفريدة.
  • embedding_dim: أبعاد كل Embedding، أي طول المتجه الذي سيمثل كل كائن.

طيب ازي اقدر احديد دول بشكل دقيق ؟

انا عندي بيانات فئوي فا عاوز استخدم التقنيه دي عشان النموذج يتدريب بشكل صحيح ؟

فا انا هتسخدم الكلام ده في الميزات هل الازم كمان اعملو في الY ؟

  • 0
نشر

أول خطوة هي بناء معجم من بيانات التدريب، أي قم بتحليل بيانات النصوص، واستخرج جميع الكلمات الفريدة، ويوجد أدوات مثل collections.Counter في Python لحساب تردد الكلمات وتحديد الكلمات الفريدة.

ثم استبعاد الكلمات النادرة من المعجم، فالكلمات التي تظهر عدد قليل جدًا من المرات ليست مفيدة للتدريب وتزيد من حجم المعجم بلا داعٍ.

وnum_embeddings يعني عدد الـ Embeddings حدده بحساب عدد العناصر الفريدة التي تريد تمثيلها، مثلاً الكلمات الفريدة في معجمك أو المستخدمين أو العناصر، ذلك هو حجم قاموسك من الـ Embeddings.

والـ embedding_dim هي أبعاد الـ Embedding حددها بالتجربة، ابدأ بقيمة مستخدمة بكثرة مثل 100-300، وجرّب قيمًا مختلفة ولاحظ كيف يؤثر ذلك على أداء النموذج، فالأبعاد الأكبر أفضل للمهام المعقدة والمعاجم الكبيرة، لكنها تستهلك موارد أكثر.

وفي حال تستخدم Embeddings مدربة مسبقًا مثل Word2Vec أو GloVe أو FastText، فهي تأتي بأبعاد محددة، حيث GloVe بأبعاد 50، 100، 200، أو 300.

بالتالي لو قررت استخدام تلك الـ Embeddings المدربة مسبقًا، فإن embedding_dim يكون بالفعل محددًا مسبقًا.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mustafa Suleiman:

أول خطوة هي بناء معجم من بيانات التدريب، أي قم بتحليل بيانات النصوص، واستخرج جميع الكلمات الفريدة، ويوجد أدوات مثل collections.Counter في Python لحساب تردد الكلمات وتحديد الكلمات الفريدة.

ثم استبعاد الكلمات النادرة من المعجم، فالكلمات التي تظهر عدد قليل جدًا من المرات ليست مفيدة للتدريب وتزيد من حجم المعجم بلا داعٍ.

الا البيانات مش عبار عن نصوص البيانات عبار عن ارقم زي 1 - 0 - 2 كده و مش هينفع ان استخدم دول كده في النموذج عشان النموذج عاوز الارقم عبار عن Float 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...