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

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

Chollet ML

السؤال

Recommended Posts

  • 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>

 

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

  • 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']

 

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...