Meezo ML نشر 2 يوليو 2021 أرسل تقرير نشر 2 يوليو 2021 (معدل) ال Poisson loss في Kears وكيف يتم استخدامها؟ تم التعديل في 2 يوليو 2021 بواسطة Meezo ML اقتباس
1 Ali Haidar Ahmad نشر 2 يوليو 2021 أرسل تقرير نشر 2 يوليو 2021 (معدل) هي دالة خسارة تحسب خسارة بواسون بين القيم الحقيقية والمتوقعة. له الصيغة التالية مع مسائل التصنيف: loss = y_pred - y_true * log(y_pred) توزيع بواسون: هو توزيع احتمالي منفصل، ويعبر عن احتمالية حدوث مجموعة من الأحداث P ضمن فترة زمنية محددة عندما تحدث هذه الأحداث بمعدل وسطي v شرط أن لا تكون متعلقة بزمن حدوث آخر حدث. يكون استخدامها مع مسائل التصنيف (المتعدد) اعتماداً على الصيغة السابقة، وفي كيراس لم يتضمن التوثيق استخدام لها مع مسائل التوقع رغم أنه من الممكن استخدامه مع هذه المسائل عندما تتبع البيانات توزيع بواسون (لكن في هذه الحالة لايتم استخدامها بنفس الصيغة قي الأعلى). يجب أن تقوم بترميز بيانات ال target ترميزاً فئوياً One-Hot. مثال: import tensorflow as tf y_true = [[0, 1, 0], [1, 0, 0]] #تمثل القيم الحقيقية One-Hot مصفوفة من ال y_pred = [[0.01, 0.9, 0], [0.99, 0.0, 0.0]] # مصفوفة القيم المتوقعة p = tf.keras.losses.Poisson() p(y_true, y_pred).numpy()#0.33590174 لاستخدامها مع نموذجك، قم بتمريريها إلى الدالة compile: model.compile( loss=tf.keras.losses.Poisson(), ) # أو model.compile( loss='poisson', ) مثال على مجموعة بيانات راوترز (تصنيف متعدد 46 فئة): # تحميل الداتا from keras.datasets import reuters (train_data, train_labels), (test_data, test_labels) = reuters.load_data( num_words=1000) #ترميز الفئات المختلفة للبيانات #كما أشرنا One-Hot-Enoding طبعاً يجب أن نستخدم الترميز from keras.utils.np_utils import to_categorical # One-Hot-Enoding one_hot_train_labels = to_categorical(train_labels) one_hot_test_labels = to_categorical(test_labels) #أي الفئات target انتهينا من ترميز قيم ال # الآن لنقم بترميز بيانات التدريب import numpy as np #One-Hot قمت بإنشاء تابع يقوم بتحويل بياناتي إلى الترميز # بإمكانك أيضاً استخدام تابع تحويل جاهز def vectorize_sequences(sequences, dimension=1000): results = np.zeros((len(sequences), dimension)) for i, sequence in enumerate(sequences): results[i, sequence] = 1. return results x_train = vectorize_sequences(train_data) x_test = vectorize_sequences(test_data) # بناء الشبكة from keras import models from keras import layers model = models.Sequential() model.add(layers.Dense(64, activation='relu', input_shape=(1000,))) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(46, activation='softmax')) # تجميع النموذج model.compile(optimizer='rmsprop', loss=tf.keras.losses.Poisson(), metrics=['accuracy']) # لاحظ كيف قمنا بتمرير دالة التكلفة إلى النموذج # التدريب history = model.fit(x_train, one_hot_train_labels, epochs=8, batch_size=512, validation_split=0.2) ------------------------------------------------------------------ Epoch 1/8 15/15 [==============================] - 1s 25ms/step - loss: 0.0900 - accuracy: 0.3860 - val_loss: 0.0635 - val_accuracy: 0.5704 Epoch 2/8 15/15 [==============================] - 0s 14ms/step - loss: 0.0608 - accuracy: 0.6000 - val_loss: 0.0558 - val_accuracy: 0.6589 Epoch 3/8 15/15 [==============================] - 0s 15ms/step - loss: 0.0544 - accuracy: 0.6672 - val_loss: 0.0536 - val_accuracy: 0.6667 Epoch 4/8 15/15 [==============================] - 0s 14ms/step - loss: 0.0511 - accuracy: 0.6971 - val_loss: 0.0505 - val_accuracy: 0.7134 Epoch 5/8 15/15 [==============================] - 0s 20ms/step - loss: 0.0481 - accuracy: 0.7221 - val_loss: 0.0487 - val_accuracy: 0.7234 Epoch 6/8 15/15 [==============================] - 0s 19ms/step - loss: 0.0457 - accuracy: 0.7484 - val_loss: 0.0475 - val_accuracy: 0.7529 Epoch 7/8 15/15 [==============================] - 0s 20ms/step - loss: 0.0435 - accuracy: 0.7724 - val_loss: 0.0470 - val_accuracy: 0.7513 Epoch 8/8 15/15 [==============================] - 0s 14ms/step - loss: 0.0421 - accuracy: 0.7906 - val_loss: 0.0465 - val_accuracy: 0.7663 تم التعديل في 2 يوليو 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
0 ريم المهدي نشر 5 يوليو 2021 أرسل تقرير نشر 5 يوليو 2021 هي الدالة التي تقوم بحساب نسبة الخطأ أو الفقد Loss للبيانات بإستخدام طريقة بواسون وهو موجود ب tensorflow.keras.losses و يقوم بإستقبال القيم المتوقعة من النموذج و القيم الحقيقية لحساب الخطأ. لاحظ المثال البسيط المطبق على الدالة: import tensorflow as tf y_true = [[0., 1.], [0., 0.]] y_pred = [[1., 1.], [0., 0.]] p = tf.keras.losses.Poisson() p(y_true, y_pred).numpy() بعد أن عرفنا tensorflow قمنا بإنشاء قيم لتمثل البيانات الحقيقية و البيانات المتوقعة من قبل النموذج، و بإستخدام دالة الفقد Poisson قمنا بحساب نسبة الخطأ والتي تعتمد على توزيع البيانات. قام @Ali Haidar Ahmad بتطبيق مثال على عملية التصنيف، سأقوم بتطبيق مثال اخر على عملية الregression: from keras import models, layers from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.4) print(X_train.shape, y_train.shape,X_test.shape, y_test.shape) model = models.Sequential() model.add(layers.Dense(13, activation='linear', input_shape=(13,))) model.add(layers.Dense(26, activation='sigmoid')) model.add(layers.Dense(1, activation='tanh')) model.compile(optimizer='rmsprop',loss=tf.keras.losses.Poisson(),metrics=['mse']) model.fit(X_train, y_train, epochs=3, batch_size=200) في المثال السابق قمنا بإستيراد الدوال التي سنتعامل معها، بالإضافة لتحميل dataset وهي خاصة بإسعار المنازل في بوسطن (regression dataset). بعد ذلك قسمنا البيانات و تعريف النموذج و من ثم تجميع البيانات و تدريب النموذج، لاحظ أن دالة حساب الخطأ او الفقد المستخدمة هي Poisson. اقتباس
السؤال
Meezo ML
ال Poisson loss في Kears وكيف يتم استخدامها؟
تم التعديل في بواسطة Meezo ML2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.