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

السؤال

Recommended Posts

  • 2
نشر

هو طريقة تحسين مشابهه ل Adam التي تقوم بتسريع GD وتخفف التذبذب وامتداد لها ويكون adamax أفضل من adam أو أكثر فعالية في بعض المشكلات يقوم adam بتحدث الأوزان اعتمادا على متوسط الأوزان الأسية للمشتقات السابقع ومتوسط الأوزان الاسية لمربعات المشتقات السابقة في حين أن adamax يقوم بتوسيع الحد الأقصى للمشتقات السابقة ويقوم إيضا بتكييف معدل تعلم لكل معلمة في عملية التحسين بشكل منفصل

لاستخدامها في كبراس نمررها إلى الدالة compile:

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

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

#استدعاء المكتبات
from keras.models import Sequential
from keras import layers
from keras.datasets import mnist
from keras.optimizers import Adamax
#تحميل الداتا
(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مع معامل تعلم  Adamax استخدام
model.compile(optimizer=Adamax(learning_rate=0.001),
loss='sparse_categorical_crossentropy',metrics=['accuracy'])
#تدريب الموديل
model.fit(X_train,y_train)

 

  • 0
نشر

هي نوع من أنواع خوارزميات التحسين وهي إمتداد لAdam والتي تستخدم infinity norm بدلاً من L2 norm كما تفعل Adam. والان لنعرف ما هو norm هي عبارة عن دالة تحول المدخل لمخرج معين، وذلك بإدراج طول موجب لvector متجه معين، وبالتالي فهي تخبرنا بطول المتجه، هنالك العديد من أنواع الnormalities التي يمكن أن تطبق،منها L1 norm وهو الذي يعطي طول المتجه في شكل blocks و L2 norm الذي يخرج الناتج في شكل أقصر طريقة للوصول بين نقطتين أو بحساب Euclidian distance وفي هذه الحالة الحساب يعتمد على قيمة p والتي تساوي 2 لكن حينما تزيد قيمة الp تصل لأعلى قيمة ممكنة لها نسميها infinity norm وهي التي تستخدم في حالة AdaMax.

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

 

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

  1. بعد إستيراد المكتبات اللازمة، تم تعريف نموذج و إضافة عدد 2Layers الأولى تحتوي على شكل البيانات المدخلة و عدد الneurons الثانية تحتوي على دالة التنشيط activation function وهي المسؤولة عن إضافة non-linearity للنموذج. بعد ذلك عرفنا دالة الموانة Adamax بإستخدام القيم الإفتراضية. ومن ثم نقوم بتعريف ال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.Adamax()
    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='Adamax')


     

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...