Meezo ML نشر 2 أغسطس 2021 أرسل تقرير نشر 2 أغسطس 2021 ماهو المعيار BinaryAccuracy في كيراس Keras؟ اقتباس
2 Ali Haidar Ahmad نشر 2 أغسطس 2021 أرسل تقرير نشر 2 أغسطس 2021 تقوم هذه الدالة بحساب مدى دقة النموذج، وتستخدم مع مهام التصنيف الثنائي، وتختلف عن مقياس الدقة accuracy (يمكنك الاطلاع عليها من الرابط في الأسفل) في أنها تسمح لنا بتحديد عتبة للتوقع أي ال "threshold" أي تعطينا قدرة أكبر في التحكم بعملية التوقع، وترد هذه الدالة قيمة عشرية بين 0 و 1 بحيث كلما اقتربت القيمة من 1 كانت دقة النموذج أعلى. وتماماً كما في الدالة Accuracy تقوم هذه الدالة بحساب عدد المرات التي قام فيها نموذجنا بتوقع القيم بشكل صحيح (عدد مرات الإصابة في التنبؤ أو بمعنى آخر عدد مرات التطابق) وتقسمها على عدد التوقعات الكلية (الصحيحة والخاطئة أي حالات التطابق وعدم التطابق). والمثال التالي سيوضح كل شيء، حيث قمت في البداية بكتابة كود بشكل يدوي لتحقيق هذا التابع ثم استخدمت كيراس: import numpy as np import tensorflow as tf # إنشاء مصفوفتين واحدة تمثل القيم المتوقعة والأخرى الحقيقية yTrue = np.array([[1],[0],[0],[1],[1]]) print("yTrue: ",yTrue,sep="\n") Pred = np.array([[0.6],[0.2],[0.4],[0.95],[1.0]]) print("Pred: ",Pred,sep="\n") Threshold = 0.5 # تابع لمدا لتعيين 1 في حالة كانت القيمة المتوقعة أكبر من العتبة و0 إذا كانت أقل منها pM = lambda x : 0 if x <= Threshold else 1 # تطبيق التابع السابق على كل العينات yPred = Pred.astype(int) for i in range(len(yPred)): yPred[i] = pM(Pred[i]) print("predicted values: ",yPred,sep="\n") print("accurately predicted : ",sum(yPred == yTrue),sep="\n") print("len: ",len(yPred)) # الآن نقوم بقسمة عدد العينات التي تم توقعها بشكل صحيح على العدد الكلي للعينات BinaryAccuracy = sum(yPred == yTrue)/len(yPred) # باستخدام كيراس Binary Accuracy حساب metric = tf.keras.metrics.BinaryAccuracy(threshold = Threshold) metric.update_state(yTrue,yPred) metric.result().numpy() """ yTrue: [[1] [0] [0] [1] [1]] Pred: [[0.6 ] [0.2 ] [0.4 ] [0.95] [1. ]] predicted values: [[1] [0] [0] [1] [1]] accurately predicted : [5] len: 5 1.0 # 100% """ هذه الدالة لها الشكل التالي في كيراس: tf.keras.metrics.BinaryAccuracy( name="binary_accuracy", dtype=None, threshold=0.5 ) # threshold هي العتبة ويمكننا استخدامها في نماذجنا مع الدالة compile كالتالي: model.compile(optimizer='sgd', loss='mse', metrics=[tf.keras.metrics.BinaryAccuracy()]) # أو model.compile(optimizer='sgd', loss='mse', metrics=["BinaryAccuracy"]) انظر للمثال التالي، حيث سأستخدمها مع مسألة تصنيف ثنائي: from keras.layers import Embedding from keras.datasets import imdb from keras import preprocessing max_features = 10000 maxlen = 20 (x_train, y_train), (x_test, y_test) = imdb.load_data( num_words=max_features) x_train = preprocessing.sequence.pad_sequences(x_train, maxlen=maxlen) x_test = preprocessing.sequence.pad_sequences(x_test, maxlen=maxlen) from keras.models import Sequential from keras.layers import Flatten, Dense model = Sequential() model.add(Embedding(10000, 8, input_length=maxlen)) model.add(Flatten()) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['BinaryAccuracy']) model.summary() history = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2) 1 اقتباس
1 Ahmed Sharshar نشر 3 أغسطس 2021 أرسل تقرير نشر 3 أغسطس 2021 الدالة BinaryAccuracy هي احدى الطرق التى يمكن حساب دقة النموذج Accuracy. وتعتمد على قياس نسبة المرات الصحيحة التي استطاع النموذج ان يتنبأها بدلالة العلامات labels الصحيحة للداتا. على سبيل المثال، لو أن العلامات الصحيحة هي [1, 1, 0, 0]، وما تنبأ به النموذج هو [0.98, 1, 0, 0.6]، لذلك فإن نسبة التوقع هي 75%، ولو أن الاوزان كانت [1, 0, 0, 1]، حينها فإن binary accuracy ستكون 50% هذا المقياس يقوم بتكوين متغيرين وهما total و count، تستخدم total في ايجاد عدد العلامات labels في الداتا كلها ، اماcount تستخدم لحساب عدد المرات التي تكون القيم المتوقعة فيها هي القيم الصحيحة، ويتم ارجاع المعدل عن طريق قسمة count على total في شكل معيار احادي binary accuracy. اما عن استخدامها في keras فهي كالتالي: tf.keras.metrics.BinaryAccuracy( name="binary_accuracy", dtype=None, threshold=0.5 ) حيث: name: هو اسم المعيار وهو اختياري dtype: وهو نوع البيانات في الخرج وهو ايضا اختياري. threshold: هو القيمة التي تفصل بين حساب اذا كان التوقع صحيح أم خطأ، وتمون قيمته من 0 ل 1، هذه القيمة يتم حسابها بطرقة تطبيقة عن طريق تجربة عدة ارقام واختيار الافضل. وفي استخدامها لتدريب النموذج، تستخدم ف اخر طبقة كالتالي: model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['BinaryAccuracy']) 1 اقتباس
السؤال
Meezo ML
ماهو المعيار BinaryAccuracy في كيراس Keras؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.