من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

ساخت شماتیک شبکه عصبی با پایتون

ساخت شماتیک شبکه عصبی با پایتون
ساخت شماتیک شبکه عصبی با پایتون

ساخت شماتیک شبکه عصبی با پایتون

اگر شما هم در حوزه‌ی شبکه‌های عصبی و cnn کار می‌کنید احتمالا نیاز خواهید داشت تا در مورد کارهای خود یک ارائه یا یک داکیومنت ایجاد کنید و برای اینکه از شبکه عصبی خودتان و اندازه‌ی لایه‌ها شماتیکی رسم کنید نیاز دارید از مراحل گفته شده در این آموزش استفاده کنید.

 

ساخت شماتیک شبکه عصبی با پایتون

برای ساخت یک شماتیک از شبکه عصبی خود شما نیاز به پکیج visualkeras دارید. برای نصب این پکیج از دستور زیر استفاده کنید:

pip install visualkeras

حالا کافیست متغیر model خود را به تابع زیر بدهید تا برای شما شماتیک شبکه‌ی شما را رسم کند:

import visualkeras

visualkeras.layered_view(model, to_file='output.png').show()

برای مثال:

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Flatten, Conv2D, Dropout, MaxPooling2D, InputLayer, ZeroPadding2D
from collections import defaultdict
import visualkeras
from PIL import ImageFont

# create VGG16
image_size = 224
model = Sequential()
model.add(InputLayer(input_shape=(image_size, image_size, 3)))

model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(64, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(64, activation='relu', kernel_size=(3, 3)))
model.add(visualkeras.SpacingDummyLayer())

model.add(MaxPooling2D((2, 2), strides=(2, 2)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(128, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(128, activation='relu', kernel_size=(3, 3)))
model.add(visualkeras.SpacingDummyLayer())

model.add(MaxPooling2D((2, 2), strides=(2, 2)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(256, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(256, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(256, activation='relu', kernel_size=(3, 3)))
model.add(visualkeras.SpacingDummyLayer())

model.add(MaxPooling2D((2, 2), strides=(2, 2)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, activation='relu', kernel_size=(3, 3)))
model.add(visualkeras.SpacingDummyLayer())

model.add(MaxPooling2D((2, 2), strides=(2, 2)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, activation='relu', kernel_size=(3, 3)))
model.add(ZeroPadding2D((1, 1)))
model.add(Conv2D(512, activation='relu', kernel_size=(3, 3)))
model.add(MaxPooling2D())
model.add(visualkeras.SpacingDummyLayer())

model.add(Flatten())

model.add(Dense(4096, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4096, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1000, activation='softmax'))

# Now visualize the model!

color_map = defaultdict(dict)
color_map[Conv2D]['fill'] = 'orange'
color_map[ZeroPadding2D]['fill'] = 'gray'
color_map[Dropout]['fill'] = 'pink'
color_map[MaxPooling2D]['fill'] = 'red'
color_map[Dense]['fill'] = 'green'
color_map[Flatten]['fill'] = 'teal'

font = ImageFont.truetype("arial.ttf", 32)

visualkeras.layered_view(model, to_file='../figures/vgg16.png', type_ignore=[visualkeras.SpacingDummyLayer])
visualkeras.layered_view(model, to_file='../figures/vgg16_legend.png', type_ignore=[visualkeras.SpacingDummyLayer],
                         legend=True, font=font)
visualkeras.layered_view(model, to_file='../figures/vgg16_spacing_layers.png', spacing=0)
visualkeras.layered_view(model, to_file='../figures/vgg16_type_ignore.png',
                         type_ignore=[ZeroPadding2D, Dropout, Flatten, visualkeras.SpacingDummyLayer])
visualkeras.layered_view(model, to_file='../figures/vgg16_color_map.png',
                         color_map=color_map, type_ignore=[visualkeras.SpacingDummyLayer])
visualkeras.layered_view(model, to_file='../figures/vgg16_flat.png',
                         draw_volume=False, type_ignore=[visualkeras.SpacingDummyLayer])
visualkeras.layered_view(model, to_file='../figures/vgg16_scaling.png',
                         scale_xy=1, scale_z=1, max_z=1000, type_ignore=[visualkeras.SpacingDummyLayer])

خروجی:

ساخت شماتیک شبکه عصبی با پایتون - خروجی 1 ساخت شماتیک شبکه عصبی با پایتون - خروجی 2 ساخت شماتیک شبکه عصبی با پایتون - خروجی 3 ساخت شماتیک شبکه عصبی با پایتون - خروجی 4 ساخت شماتیک شبکه عصبی با پایتون - خروجی 5

برای مشاهده نمونه کدهای بیشتر به مخزن گیت‌هاب پروژه بروید. کدهای بالا به زبان برنامه نویسی پایتون است.

 

اگر مشکلی با این آموزش دارید در بخش نظرات این نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]