• 0

دالة التكلفة MeanAbsolutePercentageError في كيراس Keras

ماهي دالة التكلفة  MeanAbsolutePercentageError في كيراس Keras وكيف نستخدمها؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 2

متوسط النسبة المئوية للخطأ المطلق (MAPE)، هي دالة تستخدم لحساب متوسط النسبة المئوية للخطأ المطلق بين y_true و y_pred أي القيم الحقيقية والقيم المتوقعة من قبل النموذج.  وتستخدم مع مهام التوقع، وهي تشابه لحد ما الدالة MAE:

loss = 100 * abs(y_true - y_pred) / y_true

ويعتبر هذا المقياس من المقاييس الأكثر شيوعاً المستخدمة مع مهام التنبؤ بالمناخ، ويعمل بشكل أفضل إذا لم تكن البيانات متطرفة (ولاتحوي أصفاراً). ويمكن استدعاؤها من الموديول التالي:

tf.keras.losses.MeanAbsolutePercentageError

مثال على استخدامها في كيراس:

import tensorflow as tf
y_true = [[2., 1.], [2., 3.]]
y_pred = [[1., 1.], [1., 0.]]
mape = tf.keras.losses.MeanAbsolutePercentageError()
mape(y_true, y_pred).numpy()
50.

لاستخدامها في نماذجك يمكنك تمريرها للدالة compile بالشكل التالي:

model.compile(
	...
	loss="MeanAbsolutePercentageError"
)
# أو
model.compile(
	...
	loss=tf.keras.losses.MeanAbsolutePercentageError()
)

مثال عليها أثناء تدريب نموذج لتوقع أسعار المنازل:

# تحميل الداتا
from keras.datasets import boston_housing
import keras
(train_data, train_targets), (test_data, test_targets) = boston_housing.load_data()
# توحيد البيانات
mean = train_data.mean(axis=0)
train_data -= mean
std = train_data.std(axis=0)
train_data /= std
test_data -= mean
test_data /= std
from keras import models
from keras import layers
# بناء النموذج
def build_model():
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu',
    input_shape=(train_data.shape[1],)))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='adam', loss="MeanAbsolutePercentageError", metrics=['mae'])
    return model
# تدريب النموذج
model = build_model()
model.fit(train_data, train_targets,epochs=14, batch_size=32)
-----------------------------------------------------------------------------------------------
Epoch 11/14
13/13 [==============================] - 0s 3ms/step - loss: 17.9825 - mae: 4.1283
Epoch 12/14
13/13 [==============================] - 0s 2ms/step - loss: 15.7485 - mae: 3.3775
Epoch 13/14
13/13 [==============================] - 0s 2ms/step - loss: 14.7182 - mae: 3.3004
Epoch 14/14
13/13 [==============================] - 0s 2ms/step - loss: 14.9168 - mae: 3.4608

<keras.callbacks.History at 0x7fe5c3a0f810>

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

MeanAbsolutePercentageError هي دالة تكلفة تستخدم لحساب نسبة الخطأ كنسبة مئوية بين القيم الحقيقية y_true  والقيم المتوقعة y_pred من النموذج واعطاءه كنسبة مئوية ويتم حسابها كالتالي:

loss = ((y_true - y_pred) / y_true)* 100

وفي keras توجد الدالة على الصورة الاتيه:

tf.keras.losses.MeanAbsolutePercentageError(
    reduction=losses_utils.ReductionV2.AUTO,
    name='mean_absolute_percentage_error'
)

حيث توجد ضمن دوال التكلفة tf.keras.losses، ويمكنك استخدامها كالتالي:

>>> y_true = [[0., 1.], [0., 0.]]
>>> y_pred = [[1., 1.], [1., 0.]]
>>> # Using 'auto'/'sum_over_batch_size' reduction type.  
>>> mse = tf.keras.losses.MeanSquaredError()
>>> mse(y_true, y_pred).numpy()
0.5

0.5 تعني هنا ان نص ما توقعنا به جاء مطابقا للقيم الحقيقية.

ويمكنك استخدامها اثناء تدريب النموذج باضافتها في اخر سطر للتدريب كالتالي:

model.compile(optimizer='adam', loss="MeanAbsolutePercentageError", metrics=['mae']

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن