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

السؤال

Recommended Posts

  • 1
نشر (معدل)

هو طريقة تدرج عشوائي  SGD  تعتمد على تحديث معامل التعلم بناء على تحديثات gradient descent
يساهم في حل مشكلة التدهور المستمر لمعدلات التعلم خلال عملية التدريب كذلك يعطي معامل تعلم أولي، وهذا يساعد في أن لا نقوم بوضع معامل تعلم يمكن أن يأثر على الموديل سلباً. وهذا يقلل عدد العمليات للوصول إلى المعاملات العليا.
لاستخدامها في كبراس نمررها إلى الدالة compile:

model.compile(
	optimizer=Adadelta(learning_rate=0.001)
	...
)
# أو
model.compile(
	optimizer='adadelta'
	...
)
# لاحظ أنه في الطريقة الثانية سيستخدم معمل الخطوة الافتراضي
# لذا إذا أردت تغييرها استخدم الصيغة الأولى

مثال عن طريقة الاستخدام حيث يأخذ Adadelta الوسيط learning_rate الذي يمثل معامل التعلم أو مقدار الخطوة:

#استدعاء المكتبات
from keras.models import Sequential
from keras import layers
from keras.datasets import mnist
from keras.optimizers import Adadelta
#تحميل الداتا
(X_train,y_train),(X_test,y_test)=mnist.load_data()
#تقييس الداتا وتغيير حجم الدخل منعنا لحدوث خطأ
X_train = X_train.reshape((60000, 28 * 28))/255.0
X_test = X_test.reshape((10000, 28 * 28))/255.0
#بناء الشبكه العصبونيه بطبقه واحده وطبقة خرج ب 10 أصناف
model = Sequential()
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu', input_shape=( 28*28,)))
model.add(layers.Dense(10, activation='softmax'))
#0.001مع معامل تعلم  Adadelta استخدام 
model.compile(optimizer=Adadelta(learning_rate=0.001),
loss='sparse_categorical_crossentropy',metrics=['accuracy'])
#تدريب الموديل
model.fit(X_train,y_train)

 

تم التعديل في بواسطة Ali Haidar Ahmad
  • 1
نشر

لقد تحدثت عن خوارزميات التحسين و أهميتها للنموذج هنا، يمكنك مراجعة المقدمة فقط لتتعرف على أهميتها. والان بعد أن قمت بفهم أهمية خوارزميات التحسين لنتحدث عن Adadelta بالتحديد.

Adadelta هي إختصاراً لadaptive delta و هي دالة مطورة من دوال الإتزان و دلتا هنا تشير للأوزان قبل و بعد التعديل. و ما يميز هذه الخوارزمية تحديداً هو تعديل learning rate بإستخدام عدد من gradient updates و بذلك تتابع التعلم و تعديل learning rate مع التغيير الحاصل في الأوزان.

وهي من الخوارزميات التي ينصح بأن تترك بالقيم الإفتراضية التي تأتي بها، موضحة كالاتي:

tf.keras.optimizers.Adadelta(learning_rate=0.001, rho=0.95, epsilon=1e-07, name="Adadelta")

حيث أن:

learning_rate: هو عبارة عن معامل التعلم و هو عبارة عن قيمة كسرية أكبر من 0

rho: قيمة كسرية أكبر من 0 أو مصفوفة تمثل معدل التناقص في معامل التعلم لكل عملية تعديل.

epsilon: قيمة كسرية أكبر من 0 و قيمته الإفتراضية هي K.epsilon وهي0.0000001 وهو المسؤول عن جعل العمليات الحسابية مستقرة.

يمكن إستخدام Adadelta بإحدى طريقتين:

  1. بعد إستيراد المكتبات اللازمة، تم تعريف نموذج و إضافة عدد 2Layers الأولى تحتوي على شكل البيانات المدخلة و عدد الneurons الثانية تحتوي على دالة التنشيط activation function وهي المسؤولة عن إضافة non-linearity للنموذج. بعد ذلك عرفنا دالة الموزانة Adadelta و في هذه الحالة ستسخدم الدالة القيم الإفتراضية. ومن ثم نقوم بتعريف الoptimizer في model.compile .
    from tensorflow import keras
    from tensorflow.keras import layers
    
    model = keras.Sequential()
    model.add(layers.Dense(64, kernel_initializer='uniform', input_shape=(10,)))
    model.add(layers.Activation('softmax'))
    
    opt = keras.optimizers.Adadelta()
    model.compile(loss='categorical_crossentropy', optimizer=opt)
    تذكر أن model.compile تقوم بالأتي:
    اقتباس

    Compile defines the loss function, the optimizer and the metrics.

    بالتالي نحن نحتاج إلى عملية التجميع قبل أن نقوم بأي عملية تدريب للنموذج.
     
  2. يمكننا أن نقوم بتمرير الoptimizer إلى دالة التجميع مباشرة دون التعريف المسبق كالتالي:
    model.compile(loss='categorical_crossentropy', optimizer='Adadelta')

     

 

 

 

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...