تعد الشبكات العصبية التلافيفية (CNNs) أدوات قوية لمعالجة الصور ومهام التعرف. لقد تم تصميمها لتتعلم تلقائيًا وبشكل تكيفي التسلسل الهرمي المكاني للميزات من خلال الانتشار العكسي. دعونا نتعمق في بناء شبكة CNN الأساسية باستخدام Python وTensorFlow/Keras.
قبل البدء، تأكد من تثبيت المكتبات التالية:
pip install tensorflow numpy matplotlib
ابدأ باستيراد المكتبات الأساسية:
import tensorflow as tf from tensorflow.keras import layers, models import matplotlib.pyplot as plt
في هذا المثال، سنستخدم مجموعة بيانات CIFAR-10، والتي تتكون من 60.000 صورة ملونة مقاس 32x32 في 10 فئات.
# Load the CIFAR-10 dataset (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() # Normalize the pixel values to be between 0 and 1 x_train, x_test = x_train / 255.0, x_test / 255.0
الآن، دعونا نبني نموذج CNN. سيتضمن هذا النموذج الطبقات الرئيسية: الطبقات التلافيفية، والتجميعية، والكثيفة.
model = models.Sequential() # First Convolutional Layer model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) model.add(layers.MaxPooling2D((2, 2))) # Second Convolutional Layer model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) # Third Convolutional Layer model.add(layers.Conv2D(64, (3, 3), activation='relu')) # Flatten the output and add Dense layers model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax'))
يتضمن تجميع النموذج تحديد المحسن، ووظيفة الخسارة، والمقاييس المراد مراقبتها أثناء التدريب.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
تدريب نموذج CNN على بيانات التدريب لعدد قليل من العصور.
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
بعد التدريب، قم بتقييم النموذج على بيانات الاختبار لمعرفة مدى جودة أدائه.
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nTest accuracy: {test_acc}')
أخيرًا، دعونا نتصور مدى الدقة والخسارة خلال فترات التدريب.
plt.plot(history.history['accuracy'], label='accuracy') plt.plot(history.history['val_accuracy'], label = 'val_accuracy') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.ylim([0, 1]) plt.legend(loc='lower right') plt.show()
يعد نموذج CNN الأساسي هذا بمثابة نقطة انطلاق رائعة لمعالجة مهام تصنيف الصور. ومن خلال فهم هذا النموذج وتعديله، يمكنك تجربة بنيات وتقنيات مختلفة لتحسين أداء النموذج الخاص بك. استمر في استكشاف الطبقات وتعديلها لبناء شبكات عصبية أكثر قوة! ?
تم تصميم هذا الرمز ليكون سهل المتابعة والتعديل، مما يجعله مناسبًا للمبتدئين وأولئك الذين يتطلعون إلى البدء في استخدام CNNs في بايثون.
رابط المدونة لهندسة CNN:https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3