كيفية تصور بنيات الشبكة العصبية في بايثون

دليل سريع لإنشاء تمثيل تخطيطي لشبكاتك العصبية باستخدام Jupyter أو Google Colab

حقوق الصورة - تم تطويره بواسطة المؤلف باستخدام visualkeras وJupyter Notebook.

في كثير من الأحيان، أثناء العمل مع الشبكات العصبية الاصطناعية أو أشكال أخرى مثل الشبكات العصبية التلافيفية أو الشبكات العصبية المتكررة، نريد تصور وإنشاء تمثيل تخطيطي لنموذجنا المجمع. هذا يمكن أن يحل غرضين:

  1. بينما يتيح لنا تحديد النماذج المتعددة وتدريبها تصور عمق نموذجنا ومقارنة الطبقات المختلفة وكيفية وضعها بشكل تسلسلي.
  2. يسمح بفهم أفضل لبنية النموذج، ووظائف التنشيط المستخدمة في كل طبقة، وشكل كل طبقة (عدد الخلايا العصبية)، والمعلمات التي تحتاج إلى التدريب

هناك عدد قليل من الحزم المتوفرة بسهولة في لغة بايثون والتي يمكنها إنشاء تمثيل مرئي لنماذج الشبكة العصبية الخاصة بنا. يمكن استخدام الحزم الثلاث الأولى حتى قبل تدريب النموذج (يحتاج النموذج إلى التعريف والتجميع فقط)؛ ومع ذلك، تتطلب لوحات Tensor من المستخدم تدريب النموذج على بيانات دقيقة قبل تصور البنية.

  1. آن متخيل
  2. كيراس البصرية
  3. مؤامرة نموذج كيراس
  4. مجلس الموتر
نقطة تثبيت فيجوالكراستثبيت النقطة ann_visualizerنقطة تثبيت graphviz

لا نحتاج إلى تثبيت "لوحة Tensor" و"Keras Model Plot" بشكل منفصل. سيأتي هذا مع التثبيت الأولي لـ Tensorflow & Keras.

قد نستخدم عددًا قليلاً فقط من المكتبات المذكورة أدناه. يمكن لمعظم المكتبات تحويل نموذج TensorFlow إلى رسم تخطيطي دون تدريبه بشكل صريح على البيانات. يمكنك اعتبار هذا مصدرًا واحدًا للحقيقة. ستكون بعض المكتبات، مثل Pandas وSkimage وOpenCV، مفيدة عند قراءة البيانات أو الصور المنظمة.

# استيراد المكتبات اللازمةاستيراد الباندا كما pdاستيراد numpy كـ np # استيراد numpyfrom skimage import data, io # مكتبة استيراد skimage (البيانات - صور الاختبار وبيانات الأمثلة.# io - قراءة الصور وحفظها وعرضها.)من Skiimage.color استيراد rgb2grayimport matplotlib.pyplot as plt # Import matplotlib.pyplot (إطار التخطيط في Python.)٪ matplotlib مضمنةimport os # توفر هذه الوحدة طريقة محمولة لاستخدام الوظائف المعتمدة على نظام التشغيل.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'تحذيرات الاستيراد# قمع تحذيراتتحذيرات التصفية ("تجاهل")من IPython.display عرض الاستيراداستيراد السيرة الذاتية كسيرة ذاتية
من sklearn.metrics قم باستيراد ارتباك_matrix
من sklearn.model_selection استيراد train_test_splitمن أدوات الاستيراد Tensorflow.kerasمن Tensorflow.keras.models قم باستيراد Sequential،load_modelمن Tensorflow.keras.layers قم باستيراد كثيف، وتسرب، وتسطيح، وConv2D، وMaxPool2D، وBatchNormalizationمن tensorflow.keras.optimizers استيراد آدماستيراد tensorflow مثل tfاستيراد seaborn as sns

بعض الروابط المفيدة لاستكشاف المزيد من المحتوى حول ANNs وCNNs من البداية.

سنقوم بتعريف ثلاثة نماذج مختلفة لشبكة CNN بمعلمات تشعبية مختلفة. من الناحية المثالية، في العالم الحقيقي، نهدف إلى تنفيذ بنيات مختلفة لتحقيق أقصى قدر من الدقة أو أي مقاييس ذات صلة، مع الأخذ في الاعتبار أننا نبني نموذجًا لمهمة تصنيف متعددة الفئات. لن يكون لاختيارنا لنوع المشكلة أي تأثير على كيفية استخدام حزم التصور.

لقد أنشأنا وظائف محددة من قبل المستخدم لبناء ثلاثة نماذج مختلفة بشكل منفصل مع عدد مختلف من طبقات CNN والتجميع الأقصى والطبقات الكثيفة.

4.1 - البنية 1 - طبقات CNN الضحلة + طبقات ANN

تعريف build_model():النموذج = متسلسل ()model.add(Conv2D(filters=64, kernel_size=(3, 3), input_shape=(128, 128, 1),activation='relu'))model.add(Conv2D(filters=64, kernel_size=(3, 3),activation='relu'))model.add(MaxPool2D((2, 2)))model.add (تسطيح ())model.add(Dense(256,activation='relu'))model.add(Dense(12,activation='softmax'))model.compile(loss='categorical_crossentropy', محسن='adam', metrics=['accuracy'])نموذج العودة

4.2 - الهندسة المعمارية 2 - طبقات CNN العميقة + طبقات ANN الضحلة

تعريف sconstruct_model():smodel = متسلسل ()smodel.add(Conv2D(filters=64, kernel_size=(3, 3), input_shape=(128, 128, 3),activation='relu'))smodel.add(Conv2D(filters=64, kernel_size=(3, 3),activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=128, kernel_size=(3, 3),activation='relu'))smodel.add(Conv2D(filters=128, kernel_size=(3, 3),activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=128, kernel_size=(3, 3),activation='relu'))smodel.add(Conv2D(filters=128, kernel_size=(3, 3),activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(تتسطح ())smodel.add(Dense(256,activation='relu'))smodel.add(Dense(12,activation='softmax'))#المحسن = آدم(lr=0.001)smodel.compile(loss='categorical_crossentropy', optimer='adam', metrics=['accuracy'])#ملخص نموذج()نموذج العودة

4.3 — الهندسة المعمارية 3 — طبقات CNN وANN العميقة

تعريف cconstruct_model (معدل التعلم):smodel = متسلسل ()smodel.add(Conv2D(filters=32, kernel_size=(3, 3), input_shape=(128, 128, 1),activation='relu'))smodel.add(Conv2D(filters=32, kernel_size=(3, 3),activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=64, kernel_size=(3, 3),activation='relu'))smodel.add(Conv2D(filters=64, kernel_size=(3, 3),activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=128, kernel_size=(3, 3),activation='relu'))smodel.add(Conv2D(filters=128, kernel_size=(3, 3),activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(تتسطح ())smodel.add(Dense(256,activation='relu'))smodel.add(Dense(256,activation='relu'))smodel.add(Dense(12,activation='softmax'))المحسن = آدم (lr = معدل التعلم)smodel.compile(loss='categorical_crossentropy', محسن=محسن, مقاييس=['دقة'])smodel.summary()نموذج العودةالنموذج=cconstruct_model(0.001)

تتيح وحدة Python المسماة ANN Visualizer تصور شبكة عصبية اصطناعية باستخدام بضعة أسطر من التعليمات البرمجية (Gheorghiu، 2022). ويستخدم وحدة Keras وPython's Graphviz لإنتاج رسم بياني مرتب وجذاب للشبكة العصبية. لديك المرونة لتصور شبكة التعلم العميق بأكملها أو فقط الشبكة العصبية التلافيفية التي أنشأتها مدفوعة بالتقدم في التعلم العميق (Shah, 2018).

استخدم البنية التالية أدناه لإنشاء تمثيل pdf لشبكتك العصبية. ومع ذلك، قبل ذلك، نحن بحاجة إلى تجميع النماذج المذكورة أعلاه.

نموذج=construct_model()

ann_viz(model, view=True, filename=”network.gv”، title=”MyNeural Network”)

  • نموذج - نموذج متسلسل من Keras
  • منظر - تصور الرسم البياني بعد استدعاء ann_viz()
  • اسم الملف - اسم الملف
  • عنوان - أي عنوان محدد للدلالة على الرسم البياني
من ann_visualizer.visualize استيراد ann_vizann_viz(model, view=True, filename=”cconstruct_model”، title=”CNN - النموذج 1 – الهندسة المعمارية البسيطة”)
الشكل 1: لقطة من build_model() تم إنشاؤها باستخدام ANN Visualizer. الائتمان - الصورة تم تطويرها بواسطة المؤلف باستخدام Jupyter Notebook. الناتج الأصلي كبير جدًا بحيث لا يمكن احتواؤه هنا كصورة، ومن ثم يتم استخدام لقطة سريعة للطبقات السفلية هنا.

تعمل أداة Python التي تسمى Visualkeras على تسهيل رؤية تصميمات شبكة Keras العصبية (إما بشكل منفصل أو كجزء من TensorFlow). يمكن تلبية غالبية احتياجات التصميم بسهولة. تستفيد الشبكات العصبية التلافيفية (CNN) بشكل كبير من تطوير بنيات ذات نمط متعدد الطبقات. تستفيد معظم النماذج، بما في ذلك شبكات التغذية الأمامية البسيطة، بشكل كبير من إنشاء بنية نمط الرسم البياني، والتي تدعمها هذه الوحدة (Gavrikov، 2022).

model1=construct_model()model2=sconstruct_model()model3=cconstruct_model(0.009)import visualkerasمن PIL استيراد ImageFontvisualkeras.layered_view(model1, legend=True)visualkeras.layered_view(model2, legend=True)visualkeras.layered_view(model3, legend=True)
الشكل 2. يوضح تمثيلاً تخطيطيًا لثلاثة أبنية نموذجية مختلفة. الائتمان - الصورة تم تطويرها بواسطة المؤلف باستخدام Jupyter Notebook.

keras.utils.plot_model يوفر وظائف يحمل في ثناياه عوامل لرسم نموذج محدد ومجمع من خلال Keras باستخدام حزم Graphviz وpydot. من الناحية الرسومية، فهي أقل سهولة من الحزم المستخدمة أعلاه، ولكنها تحدد البنية الأساسية للنموذج المتسلسل (Team، nd).

tf.keras.utils.plot_model(موديل 1 ،to_file = "model.png"،show_shapes=صحيح،show_dtype=خطأ،show_layer_names=صحيح،رتبةدير = "السل"،توسيع_نيستيد=صحيح،نقطة في البوصة = 96،Layer_range=لا شيء،show_layer_activations=صحيح،)

بعض المعلمات الفائقة التي يجب مراعاتها:

  1. نموذج: مثيل لنموذج Keras المترجم أو كائن النموذج
  2. إلى ملف: اسم ملف الصورة
  3. show_shapes: عرض البعد والشكل لكل طبقة في الشبكة العصبية
  4. show_layer_activation: عرض وظائف التنشيط المستخدمة داخل الخلايا العصبية
الشكل 3. يوضح مخرجات tf.keras.utils.plot_model(). الائتمان - الصورة تم تطويرها بواسطة المؤلف باستخدام Jupyter Notebook.

TensorBoard عبارة عن واجهة لوحة معلومات تتيح للمستخدمين تصور السجلات عبر عمليات تشغيل النماذج المختلفة. يمكن أن تتراوح السجلات من تتبع أي مقياس للتحقق من صحة النموذج مثل الدقة والاستدعاء وRMSE وMAPE وMSE عبر فترات مختلفة إلى إنشاء رسم بياني مفاهيمي لبنية النموذج. إنها أداة قوية لتصور ما إذا كان النموذج المقصود يطابق التصميم المتوقع أثناء توجيه الرؤى حول كيفية تغيير النموذج باستخدام رسم بياني على مستوى التشغيل.

للاستفادة من هذه الوظيفة، نحتاج إلى تحميل TensorBoard أولاً ثم إنشاء دليل سجل.

%load_ext الموترمن datetime استيراد datetimeمن keras استيراد tensorflow# تحديد رد الاتصال Keras TensorBoard.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")Tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

قم بإنشاء رد اتصال Keras TensorBoard وحدد دليل السجل قبل التدريب. يمكنك التأكد من تسجيل بيانات الرسم البياني لتصور TensorBoard عن طريق توفير رد الاتصال هذا إلى model.fit(). بمجرد استدعاء TensorBoard، قد يستغرق تحميله بضع دقائق.

نموذج صالح(X2_القطار، Y2_القطار،Batch_size = 64،العهود = 5 ،عمليات الاسترجاعات = [tensorboard_callback])

ملاحظة: X2_train وY2_train عبارة عن مجموعات بيانات تدريب لا تنعكس في الرموز أعلاه. يمكنك استبدال هذا بأي بيانات تدريب خاصة بك.

يعرض TensorBoard دائمًا الرسم البياني لمستوى العمليات بشكل افتراضي. (يتم تمييز العلامة "الافتراضية" على اليسار.) الرسم البياني مقلوب مقارنة بالكود لأن البيانات تتدفق من الأسفل إلى الأعلى. ولكن كما ترون، فإن الرسم البياني يشبه تقريبًا وصف نموذج Keras، مع حواف إضافية تؤدي إلى عقد حسابية أخرى (Tensorflow، 2022).

الشكل 4. يوضح مخرجات TensorBoard. الائتمان - الصورة تم تطويرها بواسطة المؤلف باستخدام Jupyter Notebook.

يمكن العثور على مزيد من السياق حول كيفية استخدام TensorBoard ضمن المرجع.

من وجهة نظر تجارية، حيث يتعين على المستخدم تقديم تحليله إلى مجموعة من أصحاب المصلحة، تضيف هذه المخططات المزيد من التعقيد إلى المناقشة. قد لا تكون ذات قيمة مضافة قصوى. ومع ذلك، من منظور أكاديمي وتعليمي، هناك ميزة في استخدام هذه الحزم لعرض بنيات التعلم العميق هذه. بالنسبة لي، يبرز متخيل ANN عن الباقي لأنه من السهل استيعاب المخطط، في حين يتطلب إخراج الرسم البياني لـ TensorBoard المزيد من التفاصيل الفنية قبل أن يتم استهلاك النتائج.

جافريكوف، ب. (2022، 13 أبريل). visualkeras لـ Keras / TensorFlow. جيثب. https://github.com/paulgavrikov/visualkeras

جورجيو، ت. (2022، 21 أكتوبر). آن متخيل. جيثب. https://github.com/RedaOps/ann-visualizer

شاه، أ. (2018، 28 أبريل). تصور الشبكات العصبية الاصطناعية (ANNs) باستخدام سطر واحد فقط من التعليمات البرمجية. واسطة. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

تجاوز سعة المكدس. (اختصار الثاني). التعلم الآلي – كيف يمكنك تصور بنيات الشبكات العصبية؟ تبادل مكدس علوم البيانات. تم الاسترجاع في 29 أكتوبر 2022 من https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

فريق، ك. (الثاني). وثائق Keras: أدوات رسم النماذج. Keras.io. تم الاسترجاع في 29 أكتوبر 2022 من https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Tensorflow. (2022، 6 يناير). فحص الرسم البياني TensorFlow | TensorBoard. TensorFlow. https://www.tensorflow.org/tensorboard/graphs

كيفية تصور بنيات الشبكة العصبية في بايثون أعيد نشرها من المصدر https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 عبر https:// نحو datascience.com/feed

<!–

->

الطابع الزمني:

اكثر من مستشارو Blockchain