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

الطبقة CuDNNLSTM في تنسرفلو Tensorflow

عامر ابراهيم

السؤال

Recommended Posts

  • 1

أولاً سأبدأ بالشكل العام لهذه الطبقة:

tf.compat.v1.keras.layers.CuDNNLSTM(
    units, kernel_initializer='glorot_uniform',
    recurrent_initializer='orthogonal',
    bias_initializer='zeros', unit_forget_bias=True,
    kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None,
    return_sequences=False, return_state=False,
    go_backwards=False, **kwargs
)

حيث أن units هي عدد الخلايا أو الوحدات في الشبكة وتمثل عدد المخرجات (output space)، أما الوسيط الثاني فيستخدم من أجل التحويل الخطي للمدخلات وهو عبارة عن مُهيئ لمصفوفة أوزان النواة (افتراضياً نستخدم عادةً glorot_uniform لأغلب  المهام)، أما الثالث فهو مُهيئ لمصفوفة أوزان recurrent_kernel ، وتُستخدم للتحويل الخطي للحالة المتكررة "recurrent state"  والقيمة الافتراضية التي نستخدمها غالباً "orthogonal". أما الوسيط الرابع فهو مُهيئ لمصفوفة الانحراف bias (افتراضياً 0 وأيضاً نستخدم هذه القيمة غالباً أي لاتشغل نفسك بتغييرها).  الوسيط الخامس فيحدد فيما إذا كنت تريد إضافة 1 إلى الانحراف bias الخاص ببوابة النسيان (يستحسن استخدامه حسب ماذكره Jozefowicz et al.). الوسيط السادس فيستخدم لتطبيق penalties على أوزان الطبقة (أي على ال Kernal_weights). السابع أيضاً مثل السادس لكن هنا يتم تطبيقها على ال recurrent_kernel. الثامن كذلك الأمر لكنه يطبق على أوزان ال bias  أي على ال (bias vector). الوسيط التاسع return_sequences لتحديد شكل الإخراج ففي حال قمت بضبطه على True سوف يكون الخرج 3D حيث يقوم بإعادة كامل التسلسل أما في الحالة الافتراضية أي False يقوم بإعادة الخرج الأخير من تسلسل الخرج. طبعاً لكي لاتقع في الأخطاء يجب أن نضع True إذا كانت الطبقة التالية هي طبقة تكرارية و False إذا كانت طبقة Dense فالطبقات التكرارية دخلها يجب أن يكون 3D بينما طبقات Dense دخلها يكون 2D. والدخل لهذه الطبقة يكون: [batch, timesteps, feature] والخرج: يكون إما 2D أو 3D كما أشرنا. أما الوسيط العاشر فهو لتحديد فيما إذا كنت ترد إرجاع الحالة "state" الأخيرة أم لا إلى جانب الخرج. الحادي عشر في حالة ضبطه على True فسيتم معالجة تسلسل الدخال بشكل عكسي وسيرجع التسلسل المعكوس.
الآن هذا كان تعريف بالطبقة في حالة أردت استخدامه، ونستخدمه مع النماذج بشكل مشابه للطبقة LSTM (سأرفق رابط تم فيه شرح هذه الطبقة مع مثال). حيث أن هذه الطبقة هي نفسها الطبقة LSTM ولكن مع بعض التحديثات+أسرع. فالطبقة CuDNNLSTM نسميها "Fast LSTM" ولايمكنك تشغيلها إلا على ال GPU ومع TensorFlow (لايمكنك استخدامها من إطار العمل keras فهي غير معرفة هناك) هذه الطبقة أسرع بحوالي 10 مرات من طبقة LSTM العادية. وسميت بهذا الاسم لأنه تم بناءها للاستفادة من النواة cuDNN وهي اختصار ل CUDA Deep Neural Network (cuDNN).

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...