نحوه تجسم معماری شبکه های عصبی در پایتون

یک راهنمای سریع برای ایجاد نمایش نموداری از شبکه های عصبی خود با استفاده از Jupyter یا Google Colab

اعتبار تصویر - توسط نویسنده با استفاده از visualkeras و Jupyter Notebook توسعه یافته است.

اغلب در حین کار با شبکه‌های عصبی مصنوعی یا انواع دیگر مانند شبکه‌های عصبی کانولوشن یا شبکه‌های عصبی مکرر، می‌خواهیم یک نمایش نموداری از مدل کامپایل شده خود را تجسم و ایجاد کنیم. این می تواند دو هدف را حل کند:

  1. در حالی که تعریف و آموزش چندین مدل به ما امکان می دهد عمق مدل خود را تجسم کنیم و لایه های مختلف و نحوه چیدمان متوالی آنها را با هم مقایسه کنیم.
  2. درک بهتر ساختار مدل، توابع فعال سازی مورد استفاده در هر لایه، شکل هر لایه (تعداد نورون ها) و پارامترهایی که نیاز به آموزش دارند را می دهد.

چند بسته به آسانی در پایتون موجود است که می تواند یک نمایش بصری از مدل های شبکه عصبی ما ایجاد کند. سه بسته اول را می توان حتی قبل از آموزش یک مدل استفاده کرد (مدل فقط باید تعریف و کامپایل شود). با این حال، Tensor Boards از کاربر می‌خواهد که مدل را بر روی داده‌های دقیق قبل از تجسم معماری آموزش دهد.

  1. ویژوالایزر ANN
  2. کراس بصری
  3. پلات مدل کراس
  4. تخته تانسور
pip install visualkerasپیپ نصب ann_visualizerپیپ graphviz را نصب کنید

ما نیازی به نصب "Tensor Board" و "Keras Model Plot" نداریم. این با نصب اولیه Tensorflow & Keras انجام خواهد شد.

ما ممکن است فقط از تعدادی از کتابخانه های فهرست شده در زیر استفاده کنیم. اکثر کتابخانه ها می توانند یک مدل TensorFlow را بدون آموزش صریح بر روی داده ها به نمودار تبدیل کنند. شما می توانید این را به عنوان یک منبع حقیقت واحد در نظر بگیرید. برخی از کتابخانه‌ها، مانند Pandas، Skimage و OpenCV، هنگام خواندن داده‌ها یا تصاویر ساختاریافته مفید خواهند بود.

# کتابخانه های لازم را وارد کنیدوارد کردن پانداها به عنوان pdوارد کردن numpy به عنوان np # وارد کردن numpyاز داده‌های واردات skimage، io # واردات کتابخانه skimage (داده - تصاویر آزمایشی و داده‌های نمونه.# io - خواندن، ذخیره و نمایش تصاویر.)از skimage.color import rgb2grayوارد کردن matplotlib.pyplot به عنوان plt # وارد کردن matplotlib.pyplot (فریم ورک ترسیم در پایتون.)%matplotlib درون خطیimport os # این ماژول یک روش قابل حمل برای استفاده از عملکرد وابسته به سیستم عامل ارائه می دهد.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'هشدارهای واردات# سرکوب هشدارهاwarnings.filterwarnings ('نادیده گرفتن')از صفحه نمایش واردات IPython.displayوارد کردن cv2 به عنوان cv
از sklearn.metrics import confusion_matrix
از sklearn.model_selection واردات train_test_splitاز tensorflow.keras import utilsاز tensorflow.keras.models import Sequential,load_modelاز tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationاز tensorflow.keras.optimizers واردات Adamوارد کردن tensorflow به عنوان tfواردات دریا به عنوان sns

برخی از پیوندهای مفید برای کاوش محتوای بیشتر در مورد ANN و CNN از ابتدا.

ما سه مدل مختلف CNN را با فراپارامترهای مختلف تعریف خواهیم کرد. در حالت ایده‌آل، در دنیای واقعی، هدف ما پیاده‌سازی معماری‌های مختلف برای به حداکثر رساندن دقت یا هر معیار مربوطه است، با توجه به اینکه در حال ساخت مدل برای یک کار طبقه‌بندی چند طبقه هستیم. انتخاب نوع مشکل ما هیچ تاثیری بر نحوه استفاده از بسته‌های تجسمی ندارد.

ما توابع تعریف شده توسط کاربر را برای ساختن سه مدل مختلف به طور جداگانه با تعداد متفاوت لایه‌های CNN، حداکثر تجمع و لایه‌های متراکم ایجاد کردیم.

4.1 - معماری 1 - لایه های کم عمق CNN + لایه های ANN

def construct_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(Flatten())model.add(Dense(256، activation='relu'))model.add(Dense(12، activation='softmax'))model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])مدل برگشت

4.2 - معماری 2 - CNN عمیق + لایه های ANN کم عمق

def sconstruct_model():smodel = Sequential()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(Flatten())smodel.add(Dense(256, activation='relu'))smodel.add(Dense(12، activation='softmax'))#بهینه ساز = Adam(lr=0.001)smodel.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])#model.summary()مدل برگشت

4.3 - معماری 3 - لایه های عمیق CNN و ANN

def cconstruct_model(learningRate):smodel = Sequential()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(Flatten())smodel.add(Dense(256, activation='relu'))smodel.add(Dense(256, activation='relu'))smodel.add(Dense(12، activation='softmax'))بهینه ساز = Adam (lr=learningRate)smodel.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])smodel.summary()مدل برگشتmodel=cconstruct_model(0.001)

یک ماژول پایتون به نام ANN Visualizer امکان تجسم یک شبکه عصبی مصنوعی را با چند خط کد فراهم می کند (Gheorghiu, 2022). از ماژول Graphviz Keras و Python برای تولید یک گراف شبکه عصبی مرتب و جذاب استفاده می کند. شما انعطاف پذیری برای تجسم کل شبکه یادگیری عمیق یا فقط شبکه عصبی کانولوشنال که توسط پیشرفت های یادگیری عمیق ایجاد کرده اید را دارید (شاه، 2018).

از ساختار زیر برای ایجاد یک نمایش pdf از شبکه عصبی خود استفاده کنید. البته قبل از آن باید مدل های فوق را کامپایل کنیم.

model=construct_model()

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

  • مدل - مدل ترتیبی از Keras
  • چشم انداز - پس از فراخوانی ann_viz() گراف را تجسم کنید
  • نام فایل - نام فایل
  • عنوان - هر عنوان خاص برای نشان دادن نمودار
از ann_visualizer.visualize import ann_vizann_viz(model, view=True, filename=”cconstruct_model, title=”CNN — Model 1 — Simple Architecture”)
شکل 1: عکس فوری از construct_model() ایجاد شده با استفاده از ANN Visualizer. اعتبار - تصویری که نویسنده با استفاده از Jupyter Notebook ایجاد کرده است. خروجی اصلی آنقدر بزرگ است که در اینجا به عنوان یک تصویر قرار نمی گیرد، از این رو یک عکس فوری از لایه های پایین در اینجا استفاده می شود.

یک ابزار پایتون به نام Visualkeras دیدن طرح‌های شبکه عصبی Keras را آسان‌تر می‌کند (به صورت جداگانه یا به عنوان بخشی از TensorFlow). اکثر نیازهای یک ظاهر طراحی شده را می توان به راحتی برآورده کرد. شبکه های عصبی کانولوشنال (CNN) به طور قابل توجهی از توسعه معماری های سبک لایه ای سود می برند. اکثر مدل‌ها، از جمله شبکه‌های پیش‌خور ساده، از تولید معماری سبک گراف، که این ماژول از آن پشتیبانی می‌کند، بهره زیادی می‌برند (گاوریکوف، 2022).

model1=construct_model()model2=sconstruct_model()model3=cconstruct_model(0.009)واردات ویژوالکراساز PIL import ImageFontvisualkeras.layered_view(model1, legend=True)visualkeras.layered_view(model2, legend=True)visualkeras.layered_view(model3, legend=True)
شکل 2. یک نمایش نموداری از سه معماری مدل مختلف را نشان می دهد. اعتبار - تصویری که نویسنده با استفاده از Jupyter Notebook ایجاد کرده است.

La 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=درست است،rankdir="TB"،expand_nested=درست است،dpi=96،layer_range=هیچکدام،show_layer_activations=درست است،)

چند فراپارامتر برای در نظر گرفتن:

  1. مدل: نمونه ای از مدل یا شی مدل کامپایل شده Keras
  2. to_file: نام فایل تصویر
  3. show_shapes: نمایش ابعاد و شکل هر لایه در شبکه عصبی
  4. show_layer_activation: نمایش توابع فعال سازی مورد استفاده در نورون ها
شکل 3. خروجی ()tf.keras.utils.plot_model را نشان می دهد. اعتبار - تصویری که نویسنده با استفاده از Jupyter Notebook ایجاد کرده است.

TensorBoard یک رابط داشبورد است که به کاربران اجازه می دهد تا لاگ ها را در مدل های مختلف اجرا کنند. گزارش‌ها می‌توانند از ردیابی هر معیار اعتبارسنجی مدل مانند دقت، یادآوری، RMSE، MAPE و MSE در دوره‌های مختلف تا ایجاد یک نمودار مفهومی از معماری مدل متغیر باشند. این یک ابزار قدرتمند برای تجسم اینکه آیا مدل مورد نظر با طراحی مورد انتظار مطابقت دارد یا خیر، در حین ایجاد بینش در مورد چگونگی تغییر یک مدل با استفاده از نمودار سطح عملیاتی است.

برای استفاده از این قابلیت، ابتدا باید TensorBoard را بارگیری کنیم و سپس یک دایرکتوری log ایجاد کنیم.

%load_ext tensorboardاز تاریخ وارد کردن تاریخاز Keras واردات تنسورفلو# بازخوانی Keras TensorBoard را تعریف کنید.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

بازخوانی Keras TensorBoard را ایجاد کنید و فهرست فهرست را قبل از آموزش مشخص کنید. می توانید با ارائه این callback به model.fit() اطمینان حاصل کنید که داده های نمودار برای تجسم TensorBoard ثبت شده است. وقتی TensorBoard را فراخوانی کردید، ممکن است چند دقیقه طول بکشد تا بارگیری شود.

model.fit(X2_train، Y2_train،batch_size=64،دوره = 5،callbacks=[tensorboard_callback])

توجه: X2_train و Y2_train مجموعه داده های آموزشی هستند که در کدهای بالا منعکس نشده اند. شما می توانید این را با هر داده آموزشی خود جایگزین کنید.

TensorBoard همیشه نمودار سطح op را به طور پیش فرض نشان می دهد. (تگ "پیش فرض" در سمت چپ برجسته شده است.) نمودار در مقایسه با کد وارونه است زیرا داده ها از پایین به بالا جریان دارند. اما همانطور که می بینید، نمودار تقریباً شبیه توصیف مدل Keras است، با لبه های اضافی که منجر به گره های محاسباتی دیگر می شود (Tensorflow، 2022).

شکل 4. خروجی TensorBoard را نشان می دهد. اعتبار - تصویری که نویسنده با استفاده از Jupyter Notebook ایجاد کرده است.

زمینه بیشتر در مورد نحوه استفاده از TensorBoard را می توان در زیر مرجع یافت.

از نقطه نظر تجاری، جایی که کاربر باید تجزیه و تحلیل خود را به گروهی از ذینفعان ارائه دهد، این نمودارها پیچیدگی بیشتری را به بحث اضافه می کنند. ممکن است ارزش افزوده فوق العاده ای نداشته باشند. با این حال، از دیدگاه دانشگاهی و یادگیری، استفاده از این بسته‌ها برای نمایش این معماری‌های یادگیری عمیق، شایستگی دارد. به نظر من ویژوالایزر ANN نسبت به بقیه متمایز است زیرا هضم نمودار آسان است، در حالی که خروجی نمودار TensorBoard قبل از مصرف نتایج به نکات فنی بیشتری نیاز دارد.

گاوریکوف، پی (2022، 13 آوریل). visualkeras برای Keras / TensorFlow. GitHub. https://github.com/paulgavrikov/visualkeras

Gheorghiu، T. (2022، 21 اکتبر). ویژوالایزر ANN. GitHub. https://github.com/RedaOps/ann-visualizer

شاه، ا. (2018، 28 آوریل). تجسم شبکه های عصبی مصنوعی (ANN) تنها با یک خط کد. متوسط. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

سرریز پشته. (دوم). یادگیری ماشین - چگونه معماری شبکه های عصبی را تجسم می کنید؟ Data Science Stack Exchange. بازبینی شده در 29 اکتبر 2022، از https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

تیم، K. (nd). اسناد Keras: ابزارهای طراحی مدل. Keras.io. بازبینی شده در 29 اکتبر 2022، از https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

تنسورفلو. (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 todatascience.com/feed

<!–

->

تمبر زمان:

بیشتر از مشاوران بلاک چین