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

السؤال

Recommended Posts

  • 2
نشر (معدل)

إن بنية المعطيات الأساسية  (data structure)  في Keras  هي "Model" هذا المودل يسمح لنا بتعريف و تصميم  وتنظيم طبقات الشبكة العصبية المطلوب بناءها.
في كيراس فإن أحد أشكال بنية المعطيات هذه (model)  هو الهيكلية التي تسمى Sequential. وهو أبسط أشكال النماذج (طبقات مكدسة فوق بعضها بشكل خطي) وأشهرها وأكثرها استخداماً (مستخدم في أكثر من  95% من النماذج والمهام).
إن دخل كل طبقة في هذه البنية هو tensor  (مصفوفة) واحدة بالضبط وخرجها tensor واحدة بالضبط  (exactly one input tensor and one output tensor).
لتعريف بنية المعطيات Sequential واستخدامها لتصميم وتنظيم شبكة عصبية يجب علينا أولاً أن نقوم باستيرادها، ويتم ذلك من خلال الموديول التالي: keras.models

هناك طريقتان لإضافة وتنظيم الطبقات إلى هذه البنية الأولى بباستخدام التابع add كما في المثال التالي والأخرى عن طريق تمرير قائمة بالطبقات التي نريدها إلى باني الصف Sequential  كما سنرى:

#add باستخدام 
model.add(layers.Dense(64))
model.add(layers.Dense(32))
model.add(layers.Dense(1))
# Sequential طريقة أخرى حيث نمرر قائمة  من الطبقات إلى باني الصف 
model =Sequential(
    [
        layers.Dense(64),
        layers.Dense(32),
        layers.Dense(1),
    ]
)

المثال1: هنا سأقوم بتعريف نموذج باستخدام هذه المعمارية وقمت بترجمته وتدريبه (التدريب وكل شيء قمت به هو عشوائي، غايتي هي فقط أن أبين لك شكل المعمارية كيف يتم الأمر).

#  تحميل الدتا
from keras.datasets import imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(
num_words=100)
# تحضير الداتا
import numpy as np
def vectorize_sequences(sequences, dimension=100):
    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)
y_train = np.asarray(train_labels).astype('float32')
y_test = np.asarray(test_labels).astype('float32')
#-----------------------------------------------------------------
# استيراد المكتبات
from keras import layers
# Sequential استيراد المعمارية 
from keras.models import Sequential
# Sequential إنشاء كائن يمثل نموذج من النوع 
model = Sequential()
# سنضيف الآن عدد من الطبقات بشكل عشوائي
#إلى هذا النموذج Fully Conected قمنا بإضافة 3 طبقات من نوع  
model.add(layers.Dense(64, activation='relu', input_shape=(100,))) # features 100  والدخل لهذه الطبقة هو  relu  طبقة ب32 خلية وتابع تنشيط 
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid')) # طبقة الخرج حددناها بمخرج واحد فقط
#----------------------------------------------------------------
#  ثم سنرسم شكل المعمارية باستخدام واجهة برمجة التطبيقات من كيراس  لتتضح لك
# واجهة برمجة تطبيقات Keras الوظيفية أن تفعل ذلك لنا.
from tensorflow.keras.utils import plot_model
# قم بتشغيل الكود لترى هيكل النموذج إذا أحببت
# هيكل النموذج هو الصورة في الأسفل
plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)
#-----------------------------------------------------------------
# ثم نقوم بترجمة النموذج وتمرير المعلومات التي يحتاجها
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['acc'])
# وأخيراً تدريب النموذج
history = model.fit(x_train, y_train, epochs=4)
#----------------------------------------------------------------
# لتقييم النموذج  
model.evaluate(x_test,y_test)


إذا هذا النموذج غير جيد في حال كان لديك أكثر من input أوأكثر من output في أي طبقة من طبقاتك، أو إذا كنت بحاجة إلى تشارك الطبقات أو إذا كنت لاتريد أن تكون طبولوجيا الشبكة خطية.
# Writen by: Ali_H_Ahmad
 

model.png

تم التعديل في بواسطة Ali Haidar Ahmad

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...