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

Ali Haidar Ahmad

الأعضاء
  • المساهمات

    1068
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    43

كل منشورات العضو Ali Haidar Ahmad

  1. يمكنك القيام بذلك بالشكل التالي: start = date(2012, 12, 11) end = date(2012, 12, 18) new_end = end + datetime.timedelta(days=1) ExampleModel.objects.filter(some_datetime_field__range=[start, new_end]) أو لمرونة أكبر يمكنك تصميم FilterBackend كالتالي: class FilterBackend(generic_filters.BaseFilterBackend): def filter_queryset(self, request, queryset, view): #POST ل request.data أو predicate = request.query_params if predicate.get('from_date', None) is not None and predicate.get('to_date', None) is not None: queryset = queryset.filter(your_date__range=(predicate['from_date'], predicate['to_date'])) if predicate.get('from_date', None) is not None and predicate.get('to_date', None) is None: queryset = queryset.filter(your_date__gte=predicate['from_date']) if predicate.get('to_date', None) is not None and predicate.get('from_date', None) is None: queryset = queryset.filter(your_date__lte=predicate['to_date']) return queryset
  2. مقتبس من التوثيق "لكل حقل يحتوي على مجموعة اختيارات، سيكون للكائن طريقة get_FOO_display () ، حيث FOO هو اسم الحقل. تقوم هذه الطريقة بإرجاع قيمة الحقل بحيث يمكننا قراءتها." . لذا يمكنك إجراء التعديل التالي: class User(models.Model): name = models.CharField(max_length=200) bio = models.CharField(max_length=20000, blank=True) GENDER_CHOICES = ( ('M', 'Male'), ('F', 'Female'), ) gender = models.CharField(max_length=20, choices=GENDER_CHOICES) def __str__(self): return self.get_gender_display() أو: #views ضمن ال user = user.objects.filter(to_be_listed=True) context['gender'] = user.get_gender_display() #template ضمن ال {{ user.get_gender_display }}
  3. linkedlist هي أحد الفرسان الأربعة في المسابقات البرمجية عندما نتحدث عن الجافا لما تقدمه من ديناميكية ومرونة في التعامل على عكس المصفوفات العادية فهما يوفران لك العديد من الدوال التي تمكنك من البحث والتشييك على عناصرها وإضافة ومعالجة وحذف عناصر جديدة إلخ... تابع معي: linkedlist هو كلاس يرث الكلاس ArrayList والذي بدوره يحقق الواجهة List والتي بدورها تحقق الواجهة الكبيرة Collection. الواجهة List تم بناءه لتعريف وتخزين مجموعة من العناصر كما لو أنه مصفوفة ليس لها حجم محدد. و العناصر يمكن إضافتها في أمكان محددة ضمنها, و يمكن الوصول إليها بواسطة الفهارس. وهذا مايعطيك حرية ومرونة كبيرة.ويملك العديد من الدوال مثل add و addAll و remove و إضافةً إلى الدوال التي ورثها من Collection أما ArrayList فهي تحقيق للواجهة List أي أنها تعريف للدوال الموجودة فيها إضافةً إلى دوال جديدة لمنحك حرية أكبر في التعامل مع المصفوفات. أمثلة: // لاستخدامه عليك استيراده import java.util.ArrayList; public class Main { public static void main(String[] args) { //ArrayList إنشاء ArrayList li = new ArrayList(); // طباعة عناصرها System.out.println(li); // عدد عناصرها System.out.println(li.size()); // إضافة عناصر li.add("1"); li.add("ali"); // طباعة عناصرها System.out.println(li); // عدد عناصرها System.out.println(li.size()); // حذف عنصر li.remove("ali"); } } بواني الكلاس: ArrayList() // الباني الافتراضي وهنا يكون حجمه الابتدائي هو عنصر واحد فقط ArrayList(int initialCapacity) // لتحديد حجمه المبدأي ArrayList(Collection c) //أخرى ArrayList يستخدم لكي نمرر له الآن LinkedList ترث ال arraylist كما ذكرنا، أضف إلى هذا أنها مطورة أكثر من ناحية الأداء والكفاءة والدوال. فمثلاً تمتلك دوال للإضافة والحذف والمعالجة غير موجودة في arraylist أيضاً مترجم جافا يتعامل معها بسهولة وسرعة أكبر من arraylist لكن LinkedList تشغل مساحة أكبر من الذاكرة مقاؤنةً ب LinkedList مثال: import java.util.LinkedList; public class Main { public static void main(String[] args) { LinkedList li = new LinkedList(); System.out.println(li); System.out.println(li.size()); li.add("ali"); // [ali] // للإضافة ضمن موقع محدد li.add(0, "eyad"); // [eyad, ali] li.addFirst("ali"); // [ali, eyad, ali] li.addLast("eyad"); // [ali, eyad, aliوeyad] // لحذف أول عنصر arr.remove(); // العنصر الثاني li.remove(1); } } البواني: LinkedList() // الافتراضي LinkedList(Collection c) //Arraylist أو LinkedList لتمرير
  4. نعم يمكنك القيام بذلك، كالتالي: # سأقوم بإنشاء نموذج فارغ from keras.models import Sequential model = Sequential() # ثم قم بإنشاء ملف with open(filename + 'report.txt','w') as f: #ليكون قابلاً للاستدعاء lambda قم بتمرير مقبض الملف لل model.summary(print_f=lambda x: f.write(x + '\n')) # وسيكون خرج الملف كالتالي _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= Total params: 0 Trainable params: 0 Non-trainable params: 0 _________________________________________________________________ وإذا أردت كتابته في سجل يمكنك استخدام getLogger من logging: import logging logger = logging.getLogger(__name__) model.summary(print_fn=logger.info)
  5. حسناً.. افترض أنك ترغب في تشغيل operator معين في كل مرة يتم فيها تقييم متغير معين. على سبيل المثال ، لنفترض أنك ترغب في إضافة واحد إلى c في كل مرة يتم فيها تقييم المتغير k. قد يبدو لك أن هذا الكود سيعمل: c = tf.Variable(0.0) cp = tf.assign_add(c, 1) with tf.control_dependencies([cp]): k = c init = tf.initialize_all_variables() with tf.Session() as session: init.run() for i in xrange(4): print(k.eval()) #0, 0, 0, 0 # لكن كما تلاحظ لم ينجح الأمر وذلك لأننا بحاجة إلى إضافة عقدة جديدة إلى الرسم البياني داخل كتلة control_dependencies. لذلك في مثل هكذا حالة يمكننا أن نستخدم tf.identity حيث يضيف عقدة وهمية: c = tf.Variable(0.0) cp = tf.assign_add(c, 1) with tf.control_dependencies([cp]): k = tf.identity(c) init = tf.initialize_all_variables() with tf.Session() as session: init.run() for i in xrange(4): print(k.eval()) # 1, 2, 3, 4 وبشكل عام هو مفيد أيضاً عندما تريد نقل tensor بين الأجهزة (مثلاً ، من ال GPU إلى ال CPU). حيث يضيف op عقد الإرسال / الاستلام إلى الغراف ، مما يؤدي إلى إنشاء نسخة عندما تختلف أجهزة الإدخال والإخراج. إن السلوك الافتراضي هو أن تتم إضافة عقد الإرسال / الاستلام ضمنياً عندما تحدث العملية على جهاز مختلف ولكن يمكنك تخيل بعض المواقف (خاصة في الإعدادات multi-threaded/distributed ) عندما يكون من المفيد جلب قيمة المتغير عدة مرات خلال عملية تنفيذ واحدة للجلسة. يسمح tf.identity بمزيد من التحكم فيما يتعلق بوقت قراءة القيمة من الجهاز المصدر.
  6. إليك كل ماقد تحتاجه: import pandas as pd df = pd.DataFrame(data = {'col1' : [1, 2], 'col2' : [6, 7]}) df """ col1 col2 0 1 6 1 2 7 """ #drop النهج الذي نتبعه لحذف الأعمدة هو استخدام # إليك كامل التفاصيل # لحذف عمود محدد من خلال اسم العمود df.drop(['col1'], axis = 1) # طبعاً التغيرات لاتطبق على الداتافريم الأصلي وإنما على نسخة منه """ col2 0 6 1 7 """ # inplace إذا أردنا أن تكون التعديلات مباشرة على الداتافريم نقوم بتفعيل الوسيط #df.drop(['col1'], axis = 1,inplace=True) # axis : تشير إلى المحور الذي سيتم تطبيق عملية الحذف على أساسه وهنا حددنا المحور الأفقي أي الأعمدة # الآن لوأردنا حذف سطر محدد نقوم بتمرير الفهرس له df.drop([0], axis = 0) # أيضاً نغير المحور """ col1 col2 1 2 7 """ # ماذا لو أردنا حذف عدة أعمدة من خلال الاسم df.drop(['col1', 'col2'], axis = 1) # إذا أردنا حذف عدة أعمدة أو أسطر من خلال فهرسها df.drop(df.columns[[0,1]], axis = 1) # في حال كانت الأعمدة المراد حذفها كثيرة وضمن مجالات مستمرة أو متتالية #iloc سيكون من المتعب تحديدها واحداً تلو الآخر لذا نستخدم df.drop(df.iloc[:, 0:1], axis = 1) # : نضبه على كل الأسطر أي iloc بحيث الوسيط الأول لل # أما الوسيط الثاني لها نحدد له المجال المراد حذفه #ix أو يمكننا استخدام الدالة # بحيث نحذف كل الأعمدة الموجودة ضمن العمودين المحددين df.drop(df.ix[:, 'col1':'col2'].columns, axis = 1) # حذف كل الأعمدة بين العمودين المحددين # loc وبشكل مشابه أيضاً تستطيع ن تستخدم df.drop(df.loc[:, 'col1':'col2'].columns, axis = 1)
  7. إضافة لما قدمه سامح يمكنك القيام بما يلي: from copy import deepcopy as c new_obj = c(object_you_want_copied) new_obj.id = None new_obj.save() هذه الطريقة لا تقوم باستدعاء قاعدة البيانات لاسترداد كائن. وهذا يجعلها مفيدة إذا كنت تريد إنشاء نسخة من كائن غير موجود حتى الآن في قاعدة البيانات. وهنا طريقة أخرى أيضاً لاستنساخ كائن: from django.forms import model_to_dict obj = Some.objects.get(slug='something') par = model_to_dict(instance, exclude=['id']) new_obj = Some.objects.create(**par) أو يمكنك استنساخه كالتالي: d = Foo.objects.filter(pk=1).values().first() d.update({'id': None}) duplicate = Foo.objects.create(**d)
  8. حلول أخرى: import pandas as pd df1 = pd.DataFrame(data = {'col1' : [1, 2, 3, 4, 5, 3], 'col2' : [10, 11, 12, 13, 14, 10]}) """ col1 col2 0 1 10 1 2 11 2 3 12 3 4 13 4 5 14 5 3 10 """ df2 = pd.DataFrame(data = {'col1' : [1, 2, 3], 'col2' : [10, 11, 12]}) df2 """ col1 col2 0 1 10 1 2 11 2 3 12 """ # الطريقة 1 # نحدد الأسطر الغير مشتركة uncommon_indices = np.setdiff1d(df1.index.values, df2.index.values) # array([3, 4, 5]) # نقوم باستخلاصها df1.loc[uncommon_indices,:] """ col1 col2 3 4 13 4 5 14 5 3 10 """ # الطريقة 2 df1[~df1.index.isin(df1.merge(df2, how='inner', on=['col1', 'col2']).index)] """ col1 col2 3 4 13 4 5 14 5 3 10 """ # الشرح خطوة بخطوة # تطبيق الدمج الداخلي للحصول على العناصر المشتركة بين إطاري البيانات res1=df1.merge(df2, how='inner', on=['col1', 'col2']) res1 """ col1 col2 0 1 10 1 2 11 2 3 12 """ #في الأماكن التي لاتتواجد فيها False في أماكن تواجد هذه الفهارس و True بحيث تضع isin استخدام الدالة #في الأسطر غير المشتركة True ثم استخدام عملية النفي ليتم وضع res2=~df1.index.isin(res1.index) res2 # array([False, False, False, True, True, True]) # الآن نستخلصها df1[res2] """ col1 col2 3 4 13 4 5 14 5 3 10 """ # الطريقة 3 df = pd.merge(df1, df2, how='outer', suffixes=('','_y'), indicator=True) df[df['_merge']=='left_only'][df1.columns] """ col1 col2 3 4 13 4 5 14 5 3 10 """
  9. applymap: تعمل فقط على ال Dataframe حيث نستخدمها عادةً ليتم تطبيق دالة على كل عنصر على حدة elementwise. مثال: # Importing pandas library with an alias pd import pandas as pd # سنشكل داتا فريم كالتالي Hsoub_string = 'HsoubHsoub' Hsoub_list = 3 * [pd.Series(list(Hsoub_string))] Hsoub_df = pd.DataFrame(data = Hsoub_list) print("Original dataframe:\n" + \ Hsoub_df.to_string(index = False, header = False), end = '\n\n') """ Original dataframe: H s o u b H s o u b H s o u b H s o u b H s o u b H s o u b """ # لفرز كل صف applymap استخدام الدالة # اعتماداً على الأحرف #applymap فقط نقوم بتمرير الدالة المطلوب تنفيذها كوسيط للدالة #lambda هنا سنستخدم new_Hsoub_df = Hsoub_df.applymap(str.upper) print("Transformed dataframe:\n" + \ new_Hsoub_df.to_string(index = False, header = False), end = '\n\n') """ Transformed dataframe: H S O U B H S O U B H S O U B H S O U B H S O U B H S O U B """ apply: يمكن تطبيقها على كل من ال series و ال Dataframe حيث يمكننا تطبيق الدالة على كل من العناصر المتسلسلة والعناصر الفردية بناءً على نوع الدالة التي تم تقديمها ويمكن تطبيقها على الأسطر أو الأعمدة. المثال التالي يوضح تطبيقها على Dataframe. import pandas as pd # سنشكل داتا فريم كالتالي Hsoub_string = 'HsoubHsoub' Hsoub_list = 3 * [pd.Series(list(Hsoub_string))] Hsoub_df = pd.DataFrame(data = Hsoub_list) print("Original dataframe:\n" + \ Hsoub_df.to_string(index = False, header = False), end = '\n\n') """ Original dataframe: H s o u b H s o u b H s o u b H s o u b H s o u b H s o u b """ # لفرز كل صف apply استخدام الدالة # اعتماداً على الأحرف #apply فقط نقوم بتمرير الدالة المطلوب تنفيذها كوسيط للدالة #lambda هنا سنستخدم new_Hsoub_df = Hsoub_df.apply(lambda x:x.sort_values(), axis = 1) print("Transformed dataframe:\n" + \ new_Hsoub_df.to_string(index = False, header = False), end = '\n\n') """ Transformed dataframe: H H b b o o s s u u H H b b o o s s u u H H b b o o s s u u """ تطبيقها على series: import pandas as pd # Series إنشاء Hsoub_string = 'HsoubHsoub' Hsoub_series = pd.Series(list(Hsoub_string)) print("Original series\n" + \ Hsoub_series.to_string(index = False, header = False), end = '\n\n') """ Original series H s o u b H s o u b """ # تحويل الأحرف إلى أحرف كبيرة #apply فقط نقوم بتمرير الدالة المطلوب تنفيذها كوسيط للدالة new_Hsoub_series = Hsoub_series.apply(str.upper) print("Transformed series:\n" + \ new_Hsoub_series.to_string(index = False, header = False), end = '\n\n') """ Transformed series: H S O U B H S O U B """ map: تعمل فقط مع ال series حيث يعتمد نوع العملية التي سيتم تطبيقها على الوسيطة التي تم تمريرها كوظيفة أو قاموس أو قائمة. تُستخدم هذه الطريقة بشكل عام لربط القيم من سلسلتين لهما نفس العمود. import pandas as pd # Series إنشاء Hsoub_string = 'HsoubHsoub' Hsoub_series = pd.Series(list(Hsoub_string)) print("Original series\n" + \ Hsoub_series.to_string(index = False, header = False), end = '\n\n') """ Original series H s o u b H s o u b """ # تحويل الأحرف إلى أحرف كبيرة #map فقط نقوم بتمرير الدالة المطلوب تنفيذها كوسيط للدالة new_Hsoub_series = Hsoub_series.map(str.upper) print("Transformed series:\n" + \ new_Hsoub_series.to_string(index = False, header = False), end = '\n\n') """ Transformed series: H S O U B H S O U B """
  10. الدالة read_csv تأخذ الوسيطة encoding للتعامل مع الملفات من مختلف التنسيقات. عندما نريد أن نحفظ شيئ ما كملف csv عادةً يستخدم الجميع utf-8 لكن ليس بالضرورة دوماً أن يكون تنسيقه utf-8 فقد يكون الملف تم حفظه بتنسيق آخر اوبالتالي إذا حاولت قراءته بالشكل التالي سيعطيك خطأ: data = pd.read_csv('file_name.csv', encoding='utf-8') # أو data = pd.read_csv('file_name.csv') لذا إذا كنت تعلم تنسيق الملف فقم بتمريره مباشرةً للوسيطة encoding وإذا لم تكن تعرف يجب أن تجرب بنفسك التنسيقات الأخرى: import pandas as pd data = pd.read_csv('file_name.csv', encoding = "ISO-8859-1") # أو data = pd.read_csv('file_name.csv', encoding = "cp1252") # أو data = pd.read_csv('file_name.csv', encoding = "latin1") أحدهما يجب أن يعمل... هناك الكثير من التنسيقات الأخرى لكن نادري الاستخدام.
  11. بالنسبة لـ Angular 1.0 يجب استخدام $interpolateProvider مثلاً: myModule.config(function($interpolateProvider) { $interpolateProvider.startSymbol('{[{'); $interpolateProvider.endSymbol('}]}'); }); لكن يجب أن تدرك أن الخلط بين القوالب من جانب الخادم والعميل ليس أمراً جيداً، وفي حال أردت ذلك فيجب أن تقوم بالأمر بحذر. والأمور الرئيسية هنا هي: أولاً-قابلية الصيانة (لأنها صعبة القراءة. وثانياً الأمن حيث يمكن أن يؤدي double interpolation إلى كشف security vector جديد. وهذه المشاكل لن نستطيع التعامل معها سوى التحذير. مشكلة أخرى وهي إذا بدأت في استخدام توجيهات third-party التي تستخدم {{}} في نماذجها، فإن التهيئة الخاصة بك ستؤدي إلى تعطيلها. وهذه المشكلة يجب أن يتم حلها. وكحل آخر فإنك إذا قمت بفصل أقسام الصفحة بشكل صحيح ، فيمكنك بسهولة استخدام angularjs tags في نطاق الوسم "raw". #jinja2 في {% raw %} //angularjs هنا يمكنك كتابة سمات قالب {% endraw %} #Django في قالب {% verbatim %} //angularjs هنا يمكنك كتابة سمات قالب {% endverbatim %}
  12. هندسة البرمجيات تعني بناء product جديد أو نظم جديدة أو التعديل وتطوير النظم القديمة وتحسين أخطائها إذا وجدت في تلك النظم بعض الأخطاء وكذلك تعني اكتشاف المشاكل الموجودة مسبقا حيث ان النظام هو مجموعة مكونات أو أجزاء تتفاعل مع بعضها البعض لتحقيق أهداف معينة وتلك الأهداف هي المرغوب بوجودها لحل بعض المشاكل الحياتية. وهندسة البرمجيات هي عبارة عن البرامج مع الdata مع التوثيق ولانقصد هنا بالتوثيق وضع ال comments بين الاسطر فقط بل نعني بذلك أيضا توثيق كل الخطوات التي تقوم بها في تطوير أي نظام برمجي في كل مراحله من تحليل وتصميم وتنجيز واختبار وصيانة وذلك برسم المخططات في كل مرحلة من تلك المراحل وبالتالي في حال حدوث أي مشكلة عند تطوير النظام أو عند اختباره يمكننا العودة الى المخططات ومعرفة مكان المشكلة وحلها. ويمكننا القول أن هندسة البرمجيات هي فرع من فروع علم الحاسوب المسؤولة عن تطوير البرمجيات وذلك من لحظة الفكرة وحتى لحظة خروجها عن الخدمة. والفرق بينها وبين هندسة النظم هو أن هندسة البرمجيات تركز على المواضيع البرمجية بشكل مطلق أما هندسة النظم فهي تركز على كل شيء فتشمل الhardware والsoftware وهي أوسع واشمل من هندسة البرمجيات. مثال: نظام لإدارة الموارد البشرية لكن بعد 10سنوات أصبح هذا النظام قديم جداً لذلك تقوم هندسة البرمجيات باختيار أحد حلين * أما أن نستبدل ذلك النظام بنظام برمجي آخر جديد. *أو أن تقوم بتطوير النظام نفسه وذلك بتحسين أخطائه وإضافة خدمات جديدة وإلى ما هنالك.
  13. نعم يمكنك استخدام reset_default_graph من ops كالتالي: from tensorflow.python.framework import ops ops.reset_default_graph() sess = tf.InteractiveSession()
  14. تماماً كما تحدث سامح، أيضاً قد يكون من المزعج تغيير الثوابت العامة ALLOWED_HOSTS و DEBUG في settings.py عند التبديل بين التطوير development والإنتاج production. لذا يمكنك استخدام الكود التالي لتعيين هذه الإعدادات تلقائياً: import socket if socket.gethostname() == "server_name": DEBUG = False ALLOWED_HOSTS = [".your_domain_name.com",] ... else: DEBUG = True ALLOWED_HOSTS = ["localhost", "127.0.0.1",] ...
  15. في ال NLP همنا الأول و الأخير هو إيجاد أفضل طريقة لتمثيل النص وبالتالي الحصول على أفضل النتائج سواءاً كانت المهمة تصنيف أم ترجمة أم توليد نصوص أو أو.. وعندما نحاول إيجاد أفضل طريقة لتمثيل النص فهذا يتطلب أن نضع نصب أعيننا أمرين مهمين يجب أن يضمنهم التمثيل وهما التشابه التوزيعي وفرضية التوزيع (تمثيل النص المقصود به هو تمثيل كل كلمة بشعاع من الأرقام وهذه الأشعة مجتمعة نسميها Vector space). أي هدفنا هو تمثيل الكلمات التي لدينا بأشعة وهذه الأشعة تعكس المعنى الدلالي للكلمات. التشابه التوزيعي (Distributional similarity) هو مفهوم ولايتم التعبير عنه بكود. الفكرة هنا أنه يمكن فهم معنى الكلمة من السياق الذي تظهر فيه الكلمة. يُعرف هذا أيضاً باسم السياق الضمني (connotation) : يتم تعريف المعنى حسب السياق. وهذا معاكس للسياق الحرفي (denotation) : المعنى الحرفي لأي كلمة. على سبيل المثال: "NLP rocks". المعنى الحرفي لكلمة “rocks ” هو “الحجارة” ، ولكن من السياق نجد أنها تشير إلى شيء جديد وعصري. وهناك أيضاً مفهوم آخر في ال NLP وهو فرضية التوزيع (Distributional hypothesis):في علم اللغة، يفترض هذا أن الكلمات التي تحدث في سياقات متشابهة لها معاني متشابهة. على سبيل المثال ، تحدث الكلمات الإنجليزية “Dog” و “Cat” في سياقات مماثلة. وبالتالي ، وفقاً لفرضية التوزيع ، يجب أن يكون هناك تشابه قوي بين معاني هاتين الكلمتين. الآن في نماذج فضاء المتجه Vector Space، يتم تمثيل معنى الكلمة بواسطة المتجه. وبالتالي ، إذا ظهرت كلمتان في سياق مشابه، فيجب أن تكون متجهات التمثيل المقابلة لها أيضاً قريبة من بعضها البعض. وهذان المفهومان يقوداننا إلى مفهومين هامين جداً في NLP أولاً التمثيل التوزيعي (Distributional representation): يشير هذا إلى مخططات التمثيل التي يتم الحصول عليها بناءً على توزيع الكلمات من السياق الذي تظهر فيه الكلمات. تستند هذه المخططات على فرضيات التوزيع. حيث يتم الحصول على الخاصية التوزيعية من السياق. رياضياً، تستخدم مخططات التمثيل التوزيعي متجهات عالية الأبعاد لتمثيل الكلمات. يتم الحصول على هذه المتجهات من مصفوفة (co-occurrence matrix) التي تلتقط التكرار المشترك للكلمة والسياق وأبرز الأمثلة عنه هو تمثيل النص من خلال One-Hot-Encoding و BoN و TF-IDF. ثانياً التمثيل الموزع (Distributed representation) الذي يستند إلى فرضية التوزيع. كما تحدثنا، فإن المتجهات في التمثيل التوزيعي هي أبعاد عالية جدًا ومتفرقة. هذا يجعلهم غير فعالين من الناحية الحسابية ويعيق التعلم. للتخفيف من ذلك ، تضغط مخططات التمثيل الموزعة على الأبعاد بشكل كبير. ينتج عن هذا متجهات مضغوطة (أي ذات أبعاد منخفضة) وكثيفة (أي بالكاد أي أصفار). تُعرف مساحة المتجه الناتجة بالتمثيل الموزع. وهو مابنى عليه ميلكوف ورقته البحثية عام 2013 التي أنتجت نموذج word2vec تحت مفهوم ال Wordembedding الذي فجر بها عصراً جديداً لل NLP. وهذا التتمثيل نعتمد عليه الآن في أغلي مهام ال NLP (الطبة Embedding في كيراس تعتمد على فكرة ال Wordembedding ) عنوان الورقة "Efficient Estimation of Word Representations in Vector Space"
  16. إذا كنت ترغب في ذلك ، يمكنك إنشاء مسجل مخصص لتطبيقك عن طريق توسيع بنية Node's في فئة "Console": "use strict"; const moment = require('moment'); const util = require('util'); const Console = require('console').Console; class Logger extends Console { constructor(stdout, stderr, ...otherArgs) { super(stdout, stderr, ...otherArgs); } log(...args) { super.log(moment().format('D MMM HH:mm:ss'), '-', util.format(...args)); } error(...args) { super.error(moment().format('D MMM HH:mm:ss'), '-', util.format(...args)); } } module.exports = (function() { return new Logger(process.stdout, process.stderr); }()); // بعد ذلك ، يمكنك استخدامه على النحو التالي const logger = require('./logger'); logger.log('hello world', 123456); logger.error('some error occurred', err);
  17. كما أشار sam فإن App crashed لا يعطي أي تفاصيل عن نوع الخطأ أو السبب، وإضافة إلى الحالات التي قدمها sam انتبه فيما إذا كان ملف Procfile الخاص بك بالشكل: web : node index.js // استبدله إلى web:node index.js تحقق أيضاً من اتصال قاعدة البيانات الخاصة بك. فهذا أيضاً يسبب خطأ بمجرد دفعه إلى heroku.
  18. هذه طريقة بسيطة لإيقاف التنفيذ وإرسال استجابة في نفس الوقت من خلال: return res.send('500', 'Error message here'); ويتيح لك هذا استخدام جمل if القصيرة للتعامل مع أخطاء مثلاً: if (err) { return res.send('500', 'Error message here'); }
  19. كما نعلم فإن الأوزان بتم تمثيلها ك tf.Variable في تنسرفلو وهذا ال Variable يمكنك الحصول على قيمته من خلال sess.run(Variable)، الآن إذا أردت الحصول عليه فيمكنك الحصول على قائمة بالمتغيرات Variables القابلة للتدريب (من ضمنها ستكون الأوزان) في الغراف الحالي عن طريق استدعاء tf.trainable_variables. ثم يمكنك الحصول على المتغير الذي تريده من خلال تحديد الخاصية Variable.name. انظر للمثال التالي: #"conv2d/kernel:0" بفرض اسم المتغير الذي نريده هو var = [variable for variable in tf.trainable_variables() if variable.name == "conv2d/kernel:0"][0]
  20. الاختلاف الوحيد بينهم هو أن الجلسة التفاعلية "InteractiveSession" تقوم بتثبيت نفسها كجلسة افتراضية عند بناء الغراف (أي إذا لم تعرف أي جلسة بشكل صريح سيتم استخدامها كجلسة افتراضية). انظر مثلاً عندما نقوم بتعريف جلسة عادية لمقطع برمجي في تنسرفلو نقوم بالتالي: import tensorflow.compat.v1 as tf tf.disable_v2_behavior() with tf.Session() as sess: a = tf.constant(4.0) b = tf.constant(2.0) c = a * b print(sess.run(c)) أما باستخدام InteractiveSession: sess = tf.InteractiveSession() a = tf.constant(4.0) b = tf.constant(2.0) c = a * b #sess.run مباشرةً دون الحاجة لتمريرها ل c.eval() لاحظ أننا نستطيع تنفيذ print(c.eval()) sess.close() #8.0
  21. هناك دالة مخصصة لذلك وهي الدالة reindex التي تقوم بإعادة ترتيب الأعمدة بأي شكل تريده: df.reindex(columns=['mean',0,1,2,3,4]) أو كحل ثاني: df[['mean', 0,1,2,3,4]] أو: df[ ['mean'] + [ col for col in df.columns if col != 'mean' ] ]
  22. أيضاً يمكن استخدام ال id كالتالي: {% for days in days_list %} <h2># Day {{ days.id }} - From {{ days.from_location }} to {{ days.to_location }}</h2> {% endfor %}
  23. يمكنك استخدام replace: import pandas as pd import numpy as np # للأعمدة df['col'] = df['col'].replace(np.nan, 0) # لكامل الداتافريم df = df.replace(np.nan, 0) # إذا أردت أن يتم التعديل على البيانات الأصلية دون نسخة df.replace(np.nan, 0, inplace=True) أو باستخدام : # قراءة الداتافريم df = pandas.read_csv('somefile.txt') # استبدال القيم المفقودة ب0 df = df.fillna(0) # وبشكل أكثر دقة # يمكنك أن تحدد له عمود محدد df['column_name'].fillna(0) #في حال أردنا التعديل على البيانات الأصلية inplace=True ونضيف
  24. إكما يمكنك القيام بذلك من خلال json_normalize كالتالي (بدون urllib2): import requests from pandas import json_normalize url = .. response = requests.get(url) dictr = response.json() recs = dictr['result']['records'] df = json_normalize(recs) print(df) أو كالتالي (ينصح بالطريقة الأولى): #json.load من خلال JSON نقوم بقراءة بيانات f = 'jsondata.json' with open(f) as j: dict_train = json.load(j.read()) #DataFrame إلى json تحويل مجموعة بيانات df = pd.DataFrame.from_dict(dict_train, orient='index') df.reset_index(level=0, inplace=True)
  25. هناك اختلافات بين هذين الأمرين: بالنسبة لعمليتي الinsert وال update فإن model.save يقوم إما بإدراج أو تحديث كائن في قاعدة بيانات: UPDATE إذا تم تعيين واصفة المفتاح الرئيسي pk للكائن على قيمة يتم تقييمها على أنها True. INSERT إذا لم يتم تعيين واصفة المفتاح الرئيسي للكائن أو إذا لم يحدِّث التحديث أي شيء مثلاً إذا تم تعيين ال pk على قيمة غير موجودة في قاعدة البيانات. بينما model.objects.create تقوم فقط بعملية INSERT. أيضاً إذا تم تعيين واصفة المفتاح الرئيسي على قيمة وكانت موجودة سابقاً، فإن Model.save سينفذ UPDATE، لكن Model.objects.create يعطي IntegrityError. أمثلة: # بفرض كان لدينا نموذج from django.db import models as m class f(m.Model): add = m.DateTimeField(auto_now_add=True) # دعنا نقوم بأخذ غرض من هذا الصف obj = f.objects.create(pk=1) #primary key الآن لو حاولنا إنشاء كائن له نفس ال # سينتج الخطأ التالي ob = f.objects.create(pk=1) # django.db.utils.IntegrityError: (1062, "Duplicate entry '1' for key 'PRIMARY'") ob = f(pk=1).save() # # django.db.utils.IntegrityError: (1048, "Column 'added' cannot be null") ليكن لدينا: class Subject(models.Model): subject_id = models.PositiveIntegerField(primary_key=True, db_column='subject_id') name = models.CharField(max_length=255) max_marks = models.PositiveIntegerField() # Insert/Update #model.save باستخدام #ML ل IT تغيير الاسم من # وتغيير العلامة من 77 ل 89 physics = Subject(subject_id=1, name='IT', max_marks=77) physics.save() math = Subject(subject_id=1, name='ML', max_marks=89) math.save() # النتيجة """ Subject.objects.all().values() <QuerySet [{'subject_id': 1, 'name': 'Math', 'max_marks': 50}]> """ # Model.objects.create # سيعطي خطأ Subject.objects.create(subject_id=1, name='Chemistry', max_marks=100) # IntegrityError: UNIQUE constraint failed: m****t.subject_id أيضاً Model.save تعيد None بيبنما create تعيد package_name.models.Model. ويمكننا أن نقوم بالحفظ من خلال create عن طريق جعله يسلك سلوك Model.save من خلال استخدام force_insert=True أي Model.save(force_insert=True). أي يمكن القول أن Model.objects.create يقوم بتهيئة النموذج ويقوم بالحفظ باستخدام force_insert = True.
×
×
  • أضف...