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

الشبكات العصبية المتكررة GRUs(Gated recurrent units)

Meezo ML

السؤال

Recommended Posts

  • 1

هي نسخة محسنة من الشبكة العصبية LSTM. تستخدم GRU معلمات تدريب أقل وبالتالي تستخدم ذاكرة أقل، وتنفذ بشكل أسرع وتتدرب بشكل أسرع من LSTM، لكن LSTM أكثر دقة عندما تكون التسلسلات أطول. باختصار ، إذا كان التسلسل كبيراَ أو كانت الدقة مهمة للغاية، فالأفضل هو الانتقال إلى LSTM بينما بالنسبة لاستهلاك أقل للذاكرة وتشغيل أسرع، انتقل إلى GRU. وفي كيراس يمكنك استخدامها كما في المثال التالي الذي يوضح استخدام هذه الطبقة مع مجموعة بيانات imdb لتحليل المشاعر::

# تحميل البيانات وتجهيز الداتا
from keras.datasets import imdb
from keras.preprocessing import sequence
from keras import layers
from keras.models import Sequential
max_features = 10000
maxlen = 500
(x_train, y_train), (x_test, y_test) = imdb.load_data(
num_words=max_features)
x_train = [x[::-1] for x in x_train]
x_test = [x[::-1] for x in x_test]
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
# بناء النموذج
model = Sequential()
model.add(layers.GRU(32), input_shape=(None, float_data.shape[-1]))
model.add(layers.Dense(1))
model.compile(optimizer=RMSprop(), loss='mae')
history = model.fit_generator(train_gen,
steps_per_epoch=500,
epochs=40,
validation_data=val_gen,
validation_steps=val_steps)

الصيغة العامة:

tf.keras.layers.GRU(
    units,
    activation="tanh",
    recurrent_activation="sigmoid",
    use_bias=True,
    dropout=0.0,
    return_sequences=False
)

حيث أن units هي عدد الخلايا أو الوحدات في الشبكة، أما الوسيط الثاني هو تابع التنشيط المستخدم، أما الثالث فيحدد فيما إذا كنت تريد إضافة الانحراف b الذي أشرنا له في الأعلى (دوماً true)، الوسيط الرابع هو وسيط ال dropout لتحديد نسبة الخلايا التي سيتم إسقاطها في الشبكة (بين 0 و 1) الوسيط الأخير لتحديد شكل الإخراج ففي حال قمت بضبطه على True سوف يكون الخرج 3D حيث يقوم بإعادة كامل التسلسل أما في الحالة الافتراضية أي False يقوم بإعادة الخرج الأخير من تسلسل الخرج. طبعاً لكي لاتقع في الأخطاء يجب أن نضع True إذا كانت الطبقة التالية هي طبقة تكرارية و False إذا كانت طبقة Dense فالطبقات التكرارية دخلها يجب أن يكون 3D بينما طبقات Dense دخلها يكون 2D. والدخل لهذه الطبقة يكون: [batch, timesteps, feature] والخرج: يكون إما 2D أو 3D كما أشرنا.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...