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

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. هلا يوجد استضافه مجانيه السي بانل أو سحابيه تدعم لغه بايثون لدي مشروع اريد تجربته علا اضافه مجانيه تدعم لغه بايثون
  3. اليوم
  4. كما وضح لك المدربون في التعليقات السابقة بمتوسط مذاكرة ساعتين إلى ثلاثة يومياً يعد الشهرين تقديرًا مبدئيًا جيدًا. ومع ذلك، هناك بعض الأمور التي يجب أخذها في الاعتبار والتي قد تؤثر على المدة الفعلية: أولاً التطبيق العملي حيث يتطلب الكثير من الممارسة العملية. ستحتاج إلى تخصيص وقت لتطبيق ما تعلمته على مشاريع فعلية بجانب التطبيقات العملية الموجودة بالدورة . ثانياً ستحتاج للبحث والتعمق في المفاهيموالتقنيات الموجودة بالدورة حيث في بعض الأحيان، قد تواجه مفاهيم أو تقنيات تحتاج إلى البحث عنها وفهمها بشكل أعمق، وهذا يتطلب وقتًا إضافيًا. وخلال التعلم، ستواجه تحديات ومشاكل تحتاج إلى وقت لحلها، مما قد يزيد من الوقت المطلوب. وأخيراً قدرة الأشخاص على التعلم واستيعاب المعلومات تختلف من شخص لآخر. لذلك لا تفكر في المدة المطلوبة لإنهاء الدورة بقدر الإستفادة منها
  5. ستجد في الرابط التالي تفاصيل عن محتوى ومدة الفيديوهات في الدورة . في وصف الدورة ستجد أن الدورة تحتوى على 72 ساعة من الدروس لذلك يمكنك حساب الوقت التي ستقوم بدراسته كل يوم لتعرف مده إنتهاء الدورة . ولكن هناك ملحوظة مهمة حيث أن تلك الساعات هي للشرح و قدرة إستعاب كل شخص مختلفه عن الأخر فهناك أشخاص يستوعبون الدرس من أول مرة وهنا من يعيده أكثر من مرة لفهمة و لذلك فإن هذا الشئ ليس دقيقا . وأيضا الأهم من مشاهدة الدروس هو التطبيق العملي بنفسك خلف المدرب و كتابة الملاحظات والبحث عن الأشياء التي يتم شرحها والسؤال إذا إختلطت عليك الأمور ولم تستطع فهم شئ معين . فمن الممكن أن الدرس مثلا 10 دقائق ولكن للتطبيق وراء المدرب وحل التمارين من الممكن أن يأخذ منك ساعتين مذاكرة وتطبيق بدلا من 10 دقائق. لذلك أنصحك بعدم الإهتمام إلى الوقت أكثر من الإهتمام بالتطبيق و فهم كل شئ والسؤال عن أى شئ غير واضح حيث أن مجال البرمجة الخبرة فيه تأتي من التطبيقات والمشاريع العملية وليس كثرة مشاهدة الدروس والشروح .
  6. الدورة 72 ساعة تدريبية فلنجعلها 100 لتضمن الوقت الضائع: اذا قسمت مئة على 2.5 ستحتاج حوالي 40 يوماً واذا لم تدرس في الاجازات ستحتاج 52 يوماً اي شهرين تقريباً. هذا بالمتوسط والامر يختلف من شخص لآخر والظروف التي قد تواجهها.
  7. الوقت المطلوب لانهاء دوره تطوير الواجهات الاماميه مع مذاكره ساعتين الي ثلاثه يومياً
  8. بالفعل الكورس به محتوى ضخم وكافِ جدًا لبدء في مجال تحليل البيانات، بالطبع هناك أمور متقدمة ربما لم يتم التطرق إليها بالكورس، تستطيعي تعلمها فيما بعد. لكن حاليًا المحتوى جيد جدًا لوضعك على بداية الطريق، وأهم ما به هو SQL. بعد ذلك تستطيعي بناء معرض أعمالك على موقع maven.io
  9. مرحبًا، أتذكر أنك مشتركة بأحد كورسات حسوب الخاصة بتحليل البيانات. من الجيد حاليًا التركيز على التطبيق العملي بدلًا من مجرد مشاهدة فيديوهات كثيرة. حاولي جلب بيانات معينة من بيئتك المحلية و حاولي تحليلها بناء على ما تعلمتي من المسارات. يمكننا مساعدتك في ذلك أيضًا، لكن عليكي بذل جهد في محاولة إيجاد الحل بنفسك، مثلًا كل مشكلة حاولي ساعة على الأقل بالبحث و التجريب قبل أن تقومي بالسؤال، هذا يجعل الفائدة أكبر و التقدم أسرع بكثير. تحياتي.
  10. Rafika Cha

    data analysis

    hey, I found a course in youtube , and I want to ask if it will give mee all I need to become a real data analysis
  11. الخوارزمية محددة بشكل مسبق، و الدخل الخاص بها هو البيانات و عدد العناقيد، بالتالي الخوارزمية نفسها لا تستطيع القيام بذلك وضوحًا فهي تعتمد على الدخل في عملها. أي تعديل عليها لن تصبح تمامًا كما هي. بالتالي اعتبر طريقة الكوع elbow عبارة عن خوارزمية أخرى مبنية على ال k-means.
  12. تمام جدا والف شكرااا لحضرتك بس ان فهم التكنيك ده ولكن انا بسال هل الخورزميه هي نفسيه ممكن تحديد عدد العناقيد بشكل من غير ما اخل انا تمام انا اقصد كده شكراا لحضرتكم جدا
  13. لا تحدد خوارزمية K-means بشكل تلقائي عدد العناقيد المثالي في مجموعة البيانات، بل يعتمد التحديد على فهمك للبيانات واحتياجاتك من التحليل. والطرق المتاحة لتحديد عدد العناقيد منها طريقة الكوع Elbow Method، وهي الطريقة الأكثر شيوعًا لتحديد عدد العناقيد. حيث تقوم بتحليل المخططات، من خلال رسم مخططًا يوضح مجموع مربعات المسافات داخل العناقيد (WCSS) مقابل عدد العناقيد (K)، ويكون انحناء المخطط عند نقطة معينة (الكوع) هو أفضل عدد من العناقيد. تتضمن حساب مجموع البعد المربع للبيانات بالنسبة لعدد متزايد من العناقيد، ويتم اختيار العدد الذي يظهر به الانحناء (كما لو كان “كوع”) في منحنى البعد، ويعتبر ذلك العدد هو العدد المناسب للعناقيد. لديك أيضًا طريقة الانحدار Silhouette Score وتستند إلى قياس مدى تمازج العناقيد الداخلية وفصلها عن العناقيد الأخرى. من خلال حساب معامل السيلويت لكل نقطة في البيانات، ثم حساب المتوسط لجميع النقاط للحصول على معامل السيلويت الإجمالي، ثم استخدام ذلك المعامل لتحديد عدد العناقيد الأمثل.
  14. مرحبًا علي، هناك العديد من الطرق لتحديد عدد العناقيد clusters، أحد هذه الطرق هي ما يسمى بطريقة المرفق elbow و هي موضحة في الصورة التالية: يتم تطبيقها عن طريق تطبيق خوارزمية k-means بعدد عناقيد مختلف كل مرة، كما تلاحظ في الصورة تم تطبيق ذلك ب 1 و 2 ... إلى ال 9.. بعد ذلك نجد المرفق للخط البياني. سبب نجاح هذه الطريقة هو أنه كما تلاحظ، زيادة عدد العناقيد إلى أكثر من 3 لم يقلل من الخطأ بشكل ملحوظ، و بالتالي في الغالب أنه لا يوجد فعليًا 4 عناقيد، و إلا كان الخطأ قد قل بشكل كبير. طبعًا ليس من الضروري رسم البيان يمكنك فقط طباعة قيمة الخطأ من أجل تجربة (بعدد عناقيد مختلف) و ملاحظة متى يتوقف الخطأ عن النزول بشكل كبير مع زيادة عدد العناقيد. بالتالي هذه الطريقة نفسها يمكنك أتمتتها، حيث يمكنك تحديد عتبة معينة لتغير الخطأ، في حال لم يتغير على الأقل بمقدار هذه العتبة توقف العملية و تحدد عدد العناقيد الأمثل بآخر قيمة سببت نزول بشكل ملحوظ. تحياتي.
  15. السلام عليكم ازي اخلي الخورزميه هي التحديد عدد العناقيد المناسب في خورزميات الK-means ؟ وهل كده احسن من انا احديد عدد العناقيد ؟
  16. بنستخدم خوارزميات مختلفة مثل شجرة القرار (Decision Tree) أو الانحدار الخطي (Linear Regression) لحل مشاكل معينة. ولكن هذه الخوارزميات قد تكون غير فعالة في معالجة البيانات المعقدة مثل الصور أو النصوص الطويلة. أما في التعلم العميق، تعتمد النماذج بشكل كبير على الشبكات العصبية (Neural Networks) لأنها قادرة على التعلم من البيانات المعقدة والمتنوعة بفضل بنيتها العميقة المكونة من طبقات متعددة. هذا يسمح لها بالتعرف على الأنماط والميزات المخفية في البيانات بشكل أكثر فعالية مقارنة بالخوارزميات التقليدية.
  17. طيب سوال كمان احنا ليه اصل احتاجن الneural network في تعلم الاله طيب فيه خورزميات تعلم الاله ؟ لكن في التعلم العميق الموضوع معتمد كلينا علي الneural network
  18. إذا كنت مطوّرًا أو مستخدمًا دائمًا للذكاء الاصطناعي فجولتنا في مقال اليوم ستساعدك على الاستفادة من مكتبة المحولات Transformers، وتعرض لك آلية استخدام خطوط الأنابيب ‎‏pipeline()‎‏ في الاستدلال وتوقع معلومات جديدة inference، وكيفية تحميل نموذج مدرب مسبقًا ومعالج مدرب مسبقًا يناسبان مشروعك بواسطة الأصناف التلقائية Auto Classes، بالإضافة إلى طريقة تدريب النموذج بإطار عمل PyTorch أو TensorFlow. تأكد في البداية من تثبيت المكتبات التالية لتتابع معنا خطوات العمل: !pip install transformers datasets وثبت بعدها إطار عمل التعلُّم الآلي الذي تفضله. فإذا اخترت Pytorch اكتب السطر التالي لتثبيته: pip install torch وإذا كنت تفضل TensorFlow ثَبّته بكتابة ما يلي: pip install tensorflow خطوط الأنابيب Pipeline خط الأنابيب ‎‏pipeline()‎‏ هو أسهل وأسرع الطرق المتاحة لاستخدام نموذج تعلّم آلي مدرب مسبقًا في عملية الاستدلال، ويمكنك الاستفادة منه في مجالات متنوعة لتنفيذ مهام تتعلق بمعالجة اللغة الطبيعية Natural Language Processing أو الصوتيات Audio أو الرؤية الحاسوبية Computer Vision أو الأنماط المتعددة Modalities، ويبين الجدول التالي أبرزها: المهمة الوصف أسلوب المعالجة المُعرّف Pipeline identifier تصنيف نص وضع تسمية توضيحية label لجزء محدد من النص معالجة اللغة الطبيعية (NLP) pipeline(task=“sentiment-analysis”) توليد نص توليد نص بناءً على موجه promote معين يُعطى للنموذج معالجة اللغة الطبيعية (NLP) pipeline(task=“text-generation”) التلخيص إنشاء ملخص لجزء من نص أو مستند معالجة اللغة الطبيعية (NLP) pipeline(task=“summarization”) تصنيف الصور وضع تسمية توضيحية لصورة الرؤية الحاسوبية pipeline(task=“image-classification”) تجزئة الصور وضع تسمية توضيحية لكل جزء أو بيكسل من الصورة (يدعم التجزئة الدلالية للصور تجزئة المثيل) الرؤية الحاسوبية pipeline(task=“image-segmentation”) التعرّف على الكائنات التنبؤ بالمربعات المحيطة بالكائنات في صورة معينة وتصنيفها الرؤية الحاسوبية pipeline(task=“object-detection”) تصنيف الصوتيات وضع تسمية توضيحية للبيانات الصوتية صوتيات pipeline(task=“audio-classification”) التعرّف التلقائي على الكلام تحويل الكلام إلى نص مكتوب صوتيات pipeline(task=“automatic-speech-recognition”) الإجابة على الأسئلة مرئيًا الإجابة على سؤال حول الصورة، يُعطى النموذج سؤال وصورة أنماط متعددة Multimodal pipeline(task=“vqa”) الإجابة على الأسئلة المتعلقة بالمستندات الإجابة على سؤال حول المستند، يُعطى النموذج سؤال ومستند أنماط متعددة Multimodal pipeline(task=“document-question-answering”) عَنْوَنْة الصور إعطاء عنوان مناسب للصورة أنماط متعددة Multimodal pipeline(task=“image-to-text”) والآن بعد أن ثبتنا إطار العمل سننشئ مثيلًا instance لخط الأنابيب pipeline()‎ ونحدد المهمة التي نريد استخدامه من أجلها، سنستخدمه في هذا المقال لتحليل المشاعر "sentiment-analysis"، وذلك بكتابة الأوامر التالية: >>> from transformers import pipeline >>> classifier = pipeline("sentiment-analysis") بموجب التعليمات السابقة سيُحَمِّل خط الأنابيب‎ نموذج افتراضي مدرب مسبقًا pretrained model ومُرَمِّزْ tokenizer مناسبين لمهمة تحليل المشاعر، ويمكنك بعدها استخدام المُصَنِّف classifier الذي عرّفناه على النص الذي تود تحليل المشاعر ضمنه لتحصل على النتيجة، وفق التالي: >>> classifier("We are very happy to show you the ? Transformers library.") [{'label': 'POSITIVE', 'score': 0.9998}] إذا كان لديك أكثر من مُدْخَل input أي أكثر من نص، فمَرِرهم لخط الأنابيب pipeline()‎ بهيئة قائمة ليرجع لك قائمة بالقواميس dictionaries كما يلي: >>> results = classifier(["We are very happy to show you the ? Transformers library.", "We hope you don't hate it."]) >>> for result in results: print(f"label: {result['label']}, with score: {round(result['score'], 4)}") label: POSITIVE, with score: 0.9998 label: NEGATIVE, with score: 0.5309 يمكن لخط الأنابيب أيضًا التعامل مع مجموعة بيانات كاملة dataset بدلًا من بضع مدخلات فقط، كما في المثال التالي الذي يبين استخدام pipeline()‎ لمهمة التعرّف على الكلام "automatic-speech-recognition": >>> import torch >>> from transformers import pipeline >>> speech_recognizer = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h") وسنُحمّل مجموعة بيانات صوتية audio dataset لنُطَبَّق عليها خط الأنابيب، لتكن مثلًا المجموعة MInDS-14 وفق التالي (يمكنك معرفة المزيد عن التعامل مع مجموعات البيانات بمراجعة القسم الخاص بها على منصة Hugging Face): >>> from datasets import load_dataset, Audio >>> dataset = load_dataset("PolyAI/minds14", name="en-US", split="train") عند التعامل مع الصوتيات ينبغي الانتباه لكون معدّل أخذ العينات sampling rate الخاص بمجموعة البيانات الصوتية MInDS-14 التي حملناها يطابق معدّل أخذ العينات الذي تَدرَّب عليه النموذج facebook/wav2vec2-base-960h وفق التالي: >>> dataset = dataset.cast_column("audio", Audio(sampling_rate=speech_recognizer.feature_extractor.sampling_rate)) الآن بمجرد استدعاء العمود "audio" وحسب التعليمات التالية ستُحَمَّلْ الملفات الصوتية من مجموعة البيانات ويُعاد أخذ العينات منها resampled تلقائيًا بما يتناسب مع معدّل أخذ العينات في النموذج، ثم ستُشكل مصفوفات الأشكال الموجية الأولية raw waveform arrays من العينات الأربع الأولى وتُمرر بهيئة قائمة إلى خط الأنابيب: >>> result = speech_recognizer(dataset[:4]["audio"]) >>> print([d["text"] for d in result]) ['I WOULD LIKE TO SET UP A JOINT ACCOUNT WITH MY PARTNER HOW DO I PROCEED WITH DOING THAT', "FONDERING HOW I'D SET UP A JOIN TO HELL T WITH MY WIFE AND WHERE THE AP MIGHT BE", "I I'D LIKE TOY SET UP A JOINT ACCOUNT WITH MY PARTNER I'M NOT SEEING THE OPTION TO DO IT ON THE APSO I CALLED IN TO GET SOME HELP CAN I JUST DO IT OVER THE PHONE WITH YOU AND GIVE YOU THE INFORMATION OR SHOULD I DO IT IN THE AP AN I'M MISSING SOMETHING UQUETTE HAD PREFERRED TO JUST DO IT OVER THE PHONE OF POSSIBLE THINGS", 'HOW DO I FURN A JOINA COUT'] أما عندما تتعامل مع مجموعات البيانات الكبيرة أي مع المدخلات الكبيرة (مثل التعامل بيانات الكلام speech أو الرؤية vision) فستحتاج مولدًا generator بدلًا من القائمة السابقة لتمرير البيانات إلى خطوط الأنابيب حتى تتحمل جميع المدخلات إلى الذاكرة. يمكنك معرفة المزيد عن الموضوع بالاطلاع على واجهة API لخطوط الأنابيب. تطبيق عملي ثاني باستخدام نموذج آخر ومُرَمِّز آخر تتكيف خطوط الأنابيب مع أي نموذج موجود في مستودع Hugging Face، يعطيك هذا مرونةً كبيرة في حالات الاستخدام المختلفة، لنفترض مثلًا أنك ترغب بتحليل المشاعر في نصوص مكتوبة باللغة الفرنسية، فيمكنك عندها استخدام الوسوم وفلاتر التصفية الموجودة في المستودع لتصل إلى النموذج المناسب لاحتياجك، فإذا جربت البحث عن نماذج تدعم اللغة الفرنسية سيكون نموذج BERT model المتعدد اللغات أحد الخيارات واسمه الدقيق هو: >>> model_name = "nlptown/bert-base-multilingual-uncased-sentiment" إذا كنت تعتمد إطار العمل Pytorch، فاستخدم الصنف التلقائي AutoModelForSequenceClassification الذي يناسب تصنيف النصوص، والمُرمِّز التلقائي AutoTokenizer من أجل تحميل النموذج المدرب مسبقًا الذي حددناه والمُرمِّز المرتبط به وفق التالي: >>> from transformers import AutoTokenizer, AutoModelForSequenceClassification >>> model = AutoModelForSequenceClassification.from_pretrained(model_name) >>> tokenizer = AutoTokenizer.from_pretrained(model_name) أما إذا كنت تعتمد الإطار TensorFlow، فإن الصنف التلقائي الخاص بتحميل النموذج عندها سيكون TFAutoModelForSequenceClassification والمُرمِّز المناسب هو AutoTokenizer كما يلي: >>> from transformers import AutoTokenizer, TFAutoModelForSequenceClassification >>> model = TFAutoModelForSequenceClassification.from_pretrained(model_name) >>> tokenizer = AutoTokenizer.from_pretrained(model_name) والآن لنطبق المُصَنِف classifier على النص الذي نود تحليل المشاعر ضمنه بعد كتابة النموذج والمُرمِّز اللذين اخترناهما ضمن محددات خط الأنابيب ()pipeline وفق التالي: >>> classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer) >>> classifier("Nous sommes très heureux de vous présenter la bibliothèque ? Transformers.") [{'label': '5 stars', 'score': 0.7273}] إذا لم تجد نموذجًا جاهزًا يناسب مشروعك في مستودع المنصة فينبغي لك إعادة تدريب أحد النماذج المدربة مسبقًا على بياناتك، يمكنك الاطلاع على مقال [تدريب نموذج مُعدّ مسبقًا على بيانات محددة]() من هذه السلسلة لمساعدتك بالمهمة، وتستطيع بعدها مشاركة النموذج على منصة Hagging Face باتباع الخطوات الواردة في مقال [مشاركة النماذج على منصة Hagging Face](). الصنف التلقائي AutoClass الأصناف التلقائية في حقيقة الأمر هي صاحبة الدور الرئيسي في تشغيل خطوط الأنابيب ()pipeline كما في مثالنا السابق عندما استخدمنا الصنفين التلقائيين AutoModelForSequenceClassification و AutoTokenizer، وإذا أردنا تعريف الصنف التلقائي AutoClass فهو اختصار يُرجع للمستخدم بنية النموذج الذي زوده باسمه أو مساره تلقائيًا، لذا فكل ما عليك فعله هو اختيار الصنف التلقائي AutoClass وصنف المعالج المُسبق preprocessing class المناسبين لمشروعك. لنرجع للمثال السابق ونحاول استخدام Autocalss للحصول على النتائج من خطوط الأنابيب. المُرمِّز التلقائي AutoTokenizer المُرمِّز هو المسؤول عن المعالجة التحضيرية للنص ليتحول إلى مصفوفة من الأعداد تكون بمثابة المدخلات للنموذج. وتخضع عملية الترميز لمجموعة قواعد مثل كيفية تقسيم split الكلمة وعلى أي مستوى تُقسّم الكلمات وغير ذلك (يمكنك معرفة المزيد عن الموضوع بمطالعة ملخص المُرمِّزات)، وتذكر دائمًا أن عليك إنشاء مثيل للمُرمِّز باسم النموذج نفسه للتأكد أنك تستخدم قواعد الترميز نفسها التي تدرب عليها النموذج مسبقًا. يتضمن الأمر التالي طريقة تحميل المُرَمِّز باستخدام AutoTokenizer: >>> from transformers import AutoTokenizer >>> model_name = "nlptown/bert-base-multilingual-uncased-sentiment" >>> tokenizer = AutoTokenizer.from_pretrained(model_name) والآن يمكنك تمرير النص الذي تريد ترميزه للمُرَمِّز وفق التالي: >>> encoding = tokenizer("We are very happy to show you the ? Transformers library.") >>> print(encoding) {'input_ids': [101, 11312, 10320, 12495, 19308, 10114, 11391, 10855, 10103, 100, 58263, 13299, 119, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]} يُرجع المُرَمِّز قاموسًا يتضمن: input_ids: تمثيلات عددية للرموز tokens. attention_mask: تبين أي الرموز تقابل أجزاء النص المهمة التي ينبغي الانتباه لها والأخذ بها وأيُّها لا. يتيح المُرَمِّز أيضًا إمكانية التعامل مع قائمة بالمدخلات inputs بدلًا من مدخل واحد، وإجراء عمليات الحشو والاقتطاع لزيادة أو إنقاص طول السلاسل النصية المدخلة للوصول إلى دفعات batches أو قطع بطول موحد. وذلك وفق التالي في Pytorch: pt_batch = tokenizer( ["We are very happy to show you the ? Transformers library.", "We hope you don't hate it."], padding=True, truncation=True, max_length=512, return_tensors="pt", ) وفي TensorFlow: tf_batch = tokenizer( ["We are very happy to show you the ? Transformers library.", "We hope you don't hate it."], padding=True, truncation=True, max_length=512, return_tensors="tf", ) النموذج التلقائي AutoModel توفر مكتبة المحولات Transformers طريقةً سهلة وموحدة لتحميل مثيلات النماذج المدربة مسبقًا، تشبه طريقة استخدام AutoTokenizer الذي تعاملنا معه سابقًا لكن عليك هنا تحديد AutoModel المناسب للمهمة التي تنفذها، مثل AutoModelForSequenceClassification الملائم لتصنيف النصوص في إطار العمل Pytorch: >>> from transformers import AutoModelForSequenceClassification >>> model_name = "nlptown/bert-base-multilingual-uncased-sentiment" >>> pt_model = AutoModelForSequenceClassification.from_pretrained(model_name) لنمرر الآن قاموس الدفعات أو قطع المدخلات pt_batch التي عالجناها قبل قليل إلى النموذج التلقائي AutoModel لكن بعد فك ضغطه unpack بإضافة رمز النجمتين ** وفق التالي: >>> pt_outputs = pt_model(**pt_batch) يضع النموذج المخرجات النهائية التي تنتج بعد كل التنشيطات activations في السمة logits، ثم نطبق الدالة softmax على السمة logits للحصول على الاحتمالات المتنبأ بها وفق التالي: >>> from torch import nn >>> pt_predictions = nn.functional.softmax(pt_outputs.logits, dim=-1) >>> print(pt_predictions) tensor([[0.0021, 0.0018, 0.0115, 0.2121, 0.7725], [0.2084, 0.1826, 0.1969, 0.1755, 0.2365]], grad_fn=<SoftmaxBackward0>) أما في حالة استخدامك لإطار العمل TensorFlow فإن النموذج التلقائي سيُسمى عندها TFAutoModel ويمكنك استخدامه بالطريقة نفسها التي تُحمّل بها AutoTokenizer، وأيضًا عليك هنا تحديد النموذج التلقائي TFAutoModel المناسب لمشروعك، في مثالنا سنستخدم TFAutoModelForSequenceClassification لأنه مخصص لتصنيف النصوص: >>> from transformers import TFAutoModelForSequenceClassification >>> model_name = "nlptown/bert-base-multilingual-uncased-sentiment" >>> tf_model = TFAutoModelForSequenceClassification.from_pretrained(model_name) مرر الآن مصفوفة tensors التي تتضمن قطع المدخلات التي عالجناها سابقًا إلى النموذج كما هي (أي بدون الرمز ** مثل ما فعلنا في تعليمات Pytorch): >>> tf_outputs = tf_model(tf_batch) ثم نطبق الدالة softmax على مخرجات النموذج النهائية الموجودة في السمة logits وفق التالي: >>> import tensorflow as tf >>> tf_predictions = tf.nn.softmax(tf_outputs.logits, axis=-1) >>> tf_predictions حفظ النموذج يمكنك حفظ النموذج مع المُرَمِّز الخاص به بعد الانتهاء من تدريبه على بيانات مشروعك باستخدام PreTrainedModel.save_pretrained()‎ في إطار العمل Pytorch وفق التالي: >>> pt_save_directory = "./pt_save_pretrained" >>> tokenizer.save_pretrained(pt_save_directory) >>> pt_model.save_pretrained(pt_save_directory) وعندما تحتاجه مجددًا تستطيع تحميله بواسطة PreTrainedModel.from_pretrained()‎ كما يلي: >>> pt_model = AutoModelForSequenceClassification.from_pretrained("./pt_save_pretrained") أما في إطار العمل TensorFlow فيمكنك حفظ النموذج باستخدام TFPreTrainedModel.save_pretrained()‎: >>> tf_save_directory = "./tf_save_pretrained" >>> tokenizer.save_pretrained(tf_save_directory) >>> tf_model.save_pretrained(tf_save_directory) وعندما تريد استخدامه ثانيةً استعمل TFPreTrainedModel.from_pretrained()‎ وفق التالي: >>> tf_model = TFAutoModelForSequenceClassification.from_pretrained("./tf_save_pretrained") تُعدّ ميزة تحويل النماذج من PyTorch إلى TensorFlow وبالعكس واحدة من أبرز مميزات المكتبة Transormers، وذلك باستخدام المعاملين from_pt و from_tf فيمكنك حفظ النموذج ثم تحميله بالصيغة المناسبة لإطار العمل الذي تفضله، وهذا مثال عملي: أولًا إطار العمل PyTorch: >>> from transformers import AutoModel >>> tokenizer = AutoTokenizer.from_pretrained(tf_save_directory) >>> pt_model = AutoModelForSequenceClassification.from_pretrained(tf_save_directory, from_tf=True) ثانيًا إطار العمل TensorFlow: >>> from transformers import TFAutoModel >>> tokenizer = AutoTokenizer.from_pretrained(pt_save_directory) >>> tf_model = TFAutoModelForSequenceClassification.from_pretrained(pt_save_directory, from_pt=True) بناء نموذج تعلّم آلي مخصص يمكنك بناء نموذج مخصص لحالتك بتعديل صنف إعدادات النموذج configuration class وتحديد السمات التي تريدها، مثل: عدد الطبقات المخفية hidden layers ورؤوس الانتباه attention heads، فعندما تبني نموذجك من الصفر استنادًا إلى صنف إعدادات مخصص فإن سمات النموذج ستأخذ في البداية محددات عشوائية ويمكنك ضبطها فيما وتحقيق الاستفادة المتوقعة منه بعد بتدريب النموذج على البيانات المناسبة لمشروعك. لنبدأ بالتطبيق العملي: سنستدعي أولًا الصنف AutoConfig ثم نُحمّل النموذج المُعدّ مسبقًا الذي نريد تخصيصه حسب حالتنا، ونذكر السمة التي نود تعديلها ضمن الدالة AutoConfig.from_pretrained()‎ كما في المثال التالي الذي يبين طريقة تغيير سمة رؤوس الانتباه: >>> from transformers import AutoConfig >>> my_config = AutoConfig.from_pretrained("distilbert/distilbert-base-uncased", n_heads=12) والخطوة التالية هي بناء النموذج انطلاقًا من الإعدادات المخصصة التي ضبطناها أعلاه وباستخدام AutoModel.from_config()‎ في Pytorch، و TFAutoModel.from_config()‎ في TensorFlow. إذا كنت تستخدم إطار العمل Pytorch فيمكنك تنفيذها وفق التالي: >>> from transformers import AutoModel >>> my_model = AutoModel.from_config(my_config) وإذا كنت تعتمد TensorFlow وفق التالي: >>> from transformers import TFAutoModel >>> my_model = TFAutoModel.from_config(my_config) المُدَرِّبْ Trainer- حلقة التدريب المحسنة في PyTorch جميع نماذج مكتبة المحولات Transformers المتوافقة مع PyTorch هي نماذج torch.nn.Module قياسية، يمكنك استخدامها في أي حلقة تدريب training loop نموذجية تريدها؛ يمكنك أيضًا برمجة حلقة تدريبك الخاصة وفق متطلبات عملك، ومع ذلك توفر لك المكتبة صنفًا خاصًا بتدريب حلقات PyTorch يدعى صنف المُدَرِّب Trainer class ويتضمن حلقة التدريب الاعتيادية ووظائف إضافية أخرى مثل: التدريب الموزع distributed training والتدريب مختلط الدقة mixed precision وغيرها. وفي أثناء العمل ستمرر للمُدَرِّب عدة وسطاء حسب احتياجات مشروعك، لنبدأ بالخطوات العملية: 1. حمّل في البداية نموذجًا قياسيًا: >>> from transformers import AutoModelForSequenceClassification >>> model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased") 2. حَدِّدْ قيم وسطاء التدريب مثل: معدّل التدريب learning rate، والحجم الموحد لقطع المدخلات التي يعالجها النموذج دفعة واحدة batch size، وعدد دورات التدريب number of epochs أي عدد تكرارات مجموعة البيانات التي سيتدرب عليها النموذج، وإن لم تحدد قيمًّا للوسطاء فستُستخدم القيم الافتراضية: >>> from transformers import TrainingArguments >>> training_args = TrainingArguments( output_dir="path/to/save/folder/", learning_rate=2e-5, per_device_train_batch_size=8, per_device_eval_batch_size=8, num_train_epochs=2, ) 3. حَدِّدْ صنف المعالجة المسبقة الذي تحتاجه، مثل: المُرمِّز tokenizer أو معالج الصور mage processor أو مستخرج المميزات feature extractor أو المعالج processor: >>> from transformers import AutoTokenizer >>> tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased") 4. حمّل مجموعة البيانات dataset المناسبة: >>> from datasets import load_dataset >>> dataset = load_dataset("rotten_tomatoes") # doctest: +IGNORE_RESULT 5. أنشئ دالة لترميز مجموعة البيانات: >>> def tokenize_dataset(dataset): return tokenizer(dataset["text"]) ثم طبّقها على كامل مجموعة البيانات باستعمال map وفق التالي: >>> dataset = dataset.map(tokenize_dataset, batched=True) 6. استخدم DataCollatorWithPadding لإنشاء قطع من الأمثلة من مجموعة البيانات: >>> from transformers import DataCollatorWithPadding >>> data_collator = DataCollatorWithPadding(tokenizer=tokenizer) والآن اجمع كل هذه الأصناف في شيفرة المُدَرِّب trainer كما يلي: >>> from transformers import Trainer >>> trainer = Trainer( model=model, args=training_args, train_dataset=dataset["train"], eval_dataset=dataset["test"], tokenizer=tokenizer, data_collator=data_collator, ) # doctest: +SKIP وبعد ذلك يمكنك استدعاء المُدَرِّب train()‎ ليبدأ عملية التدريب وفق التالي: >>> trainer.train() يمكنك التحكم بسلوك حلقة التدريب بطريقتين: أولًا عبر إنشاء أصناف فرعية subclassing لمنهجيات التدريب المضمنة داخل المُدَرِّب Trainer؛ يساعدك ذلك على تخصيص ميزات مثل: دالة الخسارة loss function، والمُحَسِّن optimizer، والمُجَدّوِل scheduler حسب متطلبات عملك، يمكنك الاطلاع على قسم المُدَرِّب من توثيقات Hugging Face لمزيد من المعلومات عن منهجيات التدريب القابلة للتصنيف الفرعي subclassing. وثانيًا باستخدام الاستدعاءات Callbacks لتحقيق التكامل مع المكتبات الأخرى ولتفحص عمل حلقة التدريب ومتابعة تقدمها أو إيقاف التدريب في مرحلة معينة، مع العلم أن الاستدعاءات لا تتيح لك إجراء أي تعديل على بنية الحلقة لتخصيص ميزات مثل دالة الخسارة أو غيره فمثل هذه الأعمال محصورة فقط بالطريقة الأولى أي بإنشاء الأصناف الفرعية. تدريب نموذج في TensorFlow جميع نماذج المكتبة المتوافقة مع TensorFlow هي نماذج tf.keras.Model قياسية، يمكنك تدريبها باستخدام واجهة برمجة التطبيقات Keras API، وتوفر مكتبة المحولات منهجيةً تدعى prepare_tf_dataset()‎ تسهل عليك تحميل مجموعات البيانات التي ستعتمدها بصيغة tf.data.Dataset والشروع بتدريبها باستخدام منهجيات Keras مثل compile و fit، لنبدأ بالتطبيق العملي: 1. حمّل نموذجًا قياسيًا: >>> from transformers import TFAutoModelForSequenceClassification >>> model = TFAutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased") 2. اختر صنف المعالجة المسبقة الذي تحتاجه، مثل: المُرمِّز tokenizer أو معالج الصور mage processor أو مستخرج المميزات feature extractor أو المعالج processor: >>> from transformers import AutoTokenizer >>> tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased") 3. أنشئ دالة لترميز مجموعة البيانات: >>> def tokenize_dataset(dataset): return tokenizer(dataset["text"]) # doctest: +SKIP طبّق الترميز على كامل مجموعة البيانات باستعمال map، ثم مرر المُرَمِّز ومجموعة البيانات إلى prepare_tf_dataset()‎ وفق التالي، ويمكنك في هذه المرحلة تغيير حجم الدفعات أو قطع المدخلات batch size أو خلط بيانات مجموعة البيانات إذا رغبت بذلك: >>> dataset = dataset.map(tokenize_dataset) # doctest: +SKIP >>> tf_dataset = model.prepare_tf_dataset( dataset["train"], batch_size=16, shuffle=True, tokenizer=tokenizer ) # doctest: +SKIP استدعِ compile و fit لبدء عملية التدريب، وننوه هنا إلى أن جميع نماذج مكتبة المحولات تتضمن دالة افتراضية لحساب الخسارة تتعلق بطبيعة المهمة التي تعمل عليها، يمكنك الاعتماد عليها افتراضيًا إلّا إذا رغبت بعكس ذلك: >>> from tensorflow.keras.optimizers import Adam >>> model.compile(optimizer=Adam(3e-5)) # No loss argument! >>> model.fit(tf_dataset) # doctest: +SKIP خاتمة وصلنا إلى ختام جولتنا السريعة في مكتبة Transformers، تابع مقالنا القادم تثبيت مكتبة المحولات Transformers لتتعلم كيفية تثبيتها والتعامل معها باستخدام كل من PyTorch و TensorFlow و Flax. ترجمة -وبتصرف- لقسم Quick tour من توثيقات Hugging Face. اقرأ أيضًا المقال السابق: تعرف على مكتبة المحوّلات Transformers من منصة Hugging Face تعرف على أفضل دورات الذكاء الاصطناعي تعرف على إطار عمل باي تورش PyTorch وأهميته لتطبيقات الذكاء الاصطناعي أساسيات الذكاء الاصطناعي: دليل المبتدئين
  19. حاول تحديث الواجهة مباشرًة بعد إضافة كتاب جديد، بدلاً من استخدام useEffect، أي كالتالي: export function addBook(newBook) { return async (dispatch, getState) => { try { dispatch(bookActions.setLoading()) const {data} = await axios.post(`${BOOK_URL}`, newBook, { headers: { "authorization": getState().auth.user.accessToken } }); // هنا dispatch(bookActions.setBooks([...getState().books, data])); dispatch(bookActions.clearLoading()); } catch (error) { toast.error(error?.response?.data.message); dispatch(bookActions.clearLoading()); } }; }
  20. الأمر يعتمد على المنطقة الجغرافية التي بها العملاء، فلو العملاء من بلاد أجنبية إذن بوابة الدفع Stripe هي الأنسب لك، أو Checkout. أما لو كان العملاء في منطقة الخليج، فلديك بوابات دفع أفضل لذلك مثل Tabby و PayTaps وMoyasar. أما لو تستهدف دولة معينة، فعليك تفقد أكثر بوابة أو وسيلة دفع مستخدم هناك.
  21. أنت تقصد التأسيس في البرمجة وتعلم علوم الحاسوب، لتصبح مهندس برمجيات وليس مطور للغة معينة، أي تصبح قادر على التنقل بين لغات البرمجة بشكل سلس. ستحتاج إذن للتعلم من خلال قوية وحديثة مثل جافا أو C#، أو لغة بايثون في حال لم يكن لديك أي احتكاك بالحاسوب من قبل لأنها اللغة الأسهل، لكن لا تبدأ بلغة جافاسكريبت. وإن كان لديك معرفة سابقة بعلوم الحاسوب تستطيع تعلم لغة C++ لكونها لغة ليست سهلة وهي الأفضل لكنها كما ذكرت صعبة. لكن إن لم يكن لديك وقت وتريد البدء في التعلم للحصول على وظيفة فقم بإختيار المجال بالنسبة للمطلوب في سوق العمل لديك ثم تعلم اللغة المطلوبة مباشرًة وركز على الأساسيات قد الإمكان وتعلم البرمجة نفسها أولاً وليس التقنيات مثل المكتبات والإطارات. وكبداية تستطيع البدء بدورة CS50 يوجد شرح لها بالعربية وبالإنجليزية أيضًا على اليوتيوب.
  22. مرحبًا أحمد، يمكنك استعمال stripe من هنا https://stripe.com/ يوفر لك هذا الموقع كافة الميزات المطلوبة لعملية الدفع الالكتروني من فيزا و غيرها. يمكنك الإطلاع على الموقع لمعرفة التفاصيل. شخصيًا لقد قمت باستعماله مسبقًا مع متجر قمت بتطويره باستعمال دجانغو. بالطبع هو يوفر خيارات لكافة الأمور التي ترغب بها. كما يمكنك الإطلاع على التكاليف من هنا: https://stripe.com/pricing
  23. لدي متجر اريد اضافه الدفع بالفيزا ما هي المواقع التي تقدم الخدمه باقل نسبه ؟
  24. نعم فكرة رائعة ساعدتني جدا في ترسيخ الفهم وفهم الفكرة
  1. عرض المزيد
×
×
  • أضف...