عامر ابراهيم نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 ما هو الفرق بين model.predict و model.evaluate ؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 الدالة evaluate تقوم بتوقع (predict) قيم على أساس دخل (input) يمرر لها وتقوم بحساب الدقة و التكلفة (loss) على أساس المعطيات (دالة التكلفة ومعيار الكفاءة metric) الممررة للدالة compile أي نقوم لتمريرالقيم الحقيقية والمتوقعة ويحسب لك الدقة والتكلفة. ولمزيد من التفاصيل يمكنك الانتقال إلى السؤال التالي: أما بالنسبة للدالة predict فهي تقوم فقط بتوقع القيم على أساس الدخل الممرر لها، وذلك مفيد بالطبع لأنك قد تحتاج هذا القيم، مثلاً تريد استخدام معيار آخر غير معرَف ضمن إطار العمل مثل F1-Score أو تريد التعبير عن النتائج كقيم احتمالية.. إلخ. مثال: from sklearn.datasets import make_blobs from sklearn.preprocessing import MinMaxScaler as mimx from keras.models import Sequential from keras.layers import Dense # توليد بيانات تصنيف ثنائية الأبعاد data, labels = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1) # تقييس البيانات s = mimx() s.fit(data) data = scalar.transform(data) # توليد بيانات أخرى للاختبار test, _ = make_blobs(n_samples=3, centers=2, n_features=2, random_state=1) test = s.transform(test) # تعريف النموذج model = Sequential() model.add(Dense(8, input_dim=2, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(4, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='rmsprop') model.fit(data, labels, epochs=461) # prediction prdictedValues = model.predict_classes(test) # عرض القيم المتوقعة لعينات البيانات for i in range(len(Xnew)): print("X=%s, Predicted=%s" % (test[i], prdictedValues[i])) """ X=[0.87935790 0.1206421], Predicted=[0] X=[0.22155783 0.7724488], Predicted=[1] X=[0.70015480 0.96791697], Predicted=[0] """ اقتباس
1 Ahmed Sharshar نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 ببساطة فإن model.evaluate تقوم بتوقع الخرج للبيانات التي تدخل للنموذج ومن ثم تقوم بحساب الدالة التي تحسب الدقة بأي طريقة كانت والتي نقوم بتحديدها في model.compile وهذا بناء على y_true و y_pred ثم يقوم بارجاع قيمة حساب دالة الدقة كمقياس. أما model.predict فانها فقط تقوم بارجاع y_pred. لذلك اذا استخدمت model.predict ثم قمت بحساب الدقة بنفسك على النتائج التي ترجع من تلك الدالة فانه من المفترض انتظهر لك نفس الارقام تماما اذا استخدمت model.evaluate مباشرة. المثال التالي يوضح كيف تستخدم model.predict: pred = model.predict(x_test) pred = np.argmax(pred, axis = 1)[:5] label = np.argmax(y_test,axis = 1)[:5] print(pred) >>> [7 2 1 0 4] print(label) >>>[7 2 1 0 2] لاحظ أنه قام بارجاع ما تم توقعه بناء على التعلم الذي حصل عليه النموذج، اذا قمت بمقارنه ما توقعه البرنامج بالترميز الصحيح لها ينتج لك دقة 80% (حيث انه قام بتوقع 4 صواب من أصل 5) وهو تماما ما تقوم بارجاعه لك دالة model.evaluate اقتباس
السؤال
عامر ابراهيم
ما هو الفرق بين model.predict و model.evaluate ؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.