Як візуалізувати архітектури нейронної мережі в Python

Короткий посібник із створення схемного представлення ваших нейронних мереж за допомогою Jupyter або Google Colab

Автор зображення — Розроблено автором за допомогою visualkeras і Jupyter Notebook.

Часто під час роботи зі штучними нейронними мережами або іншими варіаціями, такими як згорточні нейронні мережі або рекурентні нейронні мережі, ми хочемо візуалізувати та створити діаграмне представлення нашої скомпільованої моделі. Це може вирішити дві цілі:

  1. Визначення та навчання кількох моделей дозволяє нам візуалізувати глибину нашої моделі та порівняти різні шари та їх послідовне розташування.
  2. Дозволяє краще зрозуміти структуру моделі, функції активації, які використовуються на кожному шарі, форму кожного шару (кількість нейронів) і параметри, які потрібно навчити

У Python доступно кілька пакетів, які можуть створити візуальне представлення наших моделей нейронних мереж. Перші три пакети можна використовувати ще до того, як модель буде навчена (модель потрібно лише визначити та скомпілювати); однак Tensor Boards вимагає від користувача навчити модель на точних даних, перш ніж можна буде візуалізувати архітектуру.

  1. Візуалізатор ANN
  2. Візуальний Керас
  3. Модельна ділянка Keras
  4. Tensor Board
pip встановити visualkeraspip встановити ann_visualizerpip встановити graphviz

Нам не потрібно окремо встановлювати «Tensor Board» і «Keras Model Plot». Це надійде разом із початковим встановленням Tensorflow & Keras.

Ми можемо використовувати лише деякі бібліотеки, перелічені нижче. Більшість бібліотек можуть перетворити модель TensorFlow на діаграму без явного навчання на даних. Ви можете вважати це єдиним джерелом правди. Деякі бібліотеки, такі як Pandas, Skimage і OpenCV, стануть у нагоді під час читання структурованих даних або зображень.

# Імпорт необхідних бібліотекімпортувати панди як pdimport numpy as np # Імпортувати numpyз даних імпорту skimage, io # Імпорт бібліотеки skimage (дані – тестові зображення та приклади даних.# io - читання, збереження та відображення зображень.)із skimage.color імпорт rgb2grayімпортувати matplotlib.pyplot як plt # Імпортувати matplotlib.pyplot (фреймворк побудови в Python.)%matplotlib вбудованийimport os # Цей модуль забезпечує портативний спосіб використання залежних від операційної системи функцій.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'попередження про імпорт# Придушити попередженняwarnings.filterwarnings('ignore')з IPython.display імпортувати дисплейімпорт cv2 як cv
з sklearn.metrics імпортувати confusion_matrix
з sklearn.model_selection імпортувати train_test_splitз tensorflow.keras імпорт утилітиз tensorflow.keras.models імпорт Sequential,load_modelз tensorflow.keras.layers імпорт 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’))#optimizer = Адам(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()повернення смодельмодель=cconstruct_model(0.001)

Модуль Python під назвою ANN Visualizer дає змогу візуалізувати штучну нейронну мережу за допомогою кількох рядків коду (Gheorghiu, 2022). Він використовує Keras і модуль Python Graphviz для створення акуратного та привабливого графіка нейронної мережі. У вас є можливість візуалізувати всю мережу глибокого навчання або лише згортову нейронну мережу, яку ви створили завдяки прогресу глибокого навчання (Шах, 2018).

Використовуйте наведену нижче структуру, щоб створити pdf-представлення вашої нейронної мережі. Однак перед цим нам потрібно скомпілювати наведені вище моделі.

model=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: Знімок construct_model(), створеного за допомогою Visualizer ANN. Кредит — зображення, розроблене автором за допомогою Jupyter Notebook. вихідний результат занадто великий, щоб поміститися тут як зображення, тому тут використовується моментальний знімок нижніх шарів.

Інструмент Python під назвою Visualkeras полегшує перегляд проектів нейронної мережі Keras (окремо або як частину TensorFlow). Більшість потреб у укладанні можна задовольнити з легкістю. Згорткові нейронні мережі (CNN) отримують значну вигоду від розробки багатошарових архітектур. Більшість моделей, включаючи прості мережі прямого зв’язку, отримують значну вигоду від генерації архітектури у стилі графа, яку підтримує цей модуль (Гавріков, 2022).

model1=construct_model()model2=sconstruct_model()model3=cconstruct_model(0.009)імпорт візуалокз 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, n.d.).

tf.keras.utils.plot_model(модель1,to_file="model.png",show_shapes=Правда,show_dtype=False,show_layer_names=Правда,rankdir="ТБ",expand_nested=Правда,dpi=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 tensorboardз дати і часу імпортуз імпорту 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, завантаження може зайняти кілька хвилин.

model.fit(X2_train, Y2_train,batch_size=64,епох=5,callbacks=[tensorboard_callback])

Примітка. X2_train і Y2_train — це навчальні набори даних, які не відображені в кодах вище. Ви можете замінити це будь-якими власними навчальними даними.

TensorBoard завжди показує графік операційного рівня за замовчуванням. (Тег «За замовчуванням» виділено ліворуч.) Графік перевернутий порівняно з кодом, оскільки дані переміщуються знизу вгору. Але, як бачите, графік приблизно нагадує опис моделі Кераса з додатковими ребрами, що ведуть до інших обчислювальних вузлів (Tensorflow, 2022).

Рисунок 4. Ілюструє результат TensorBoard. Кредит — зображення, розроблене автором за допомогою Jupyter Notebook.

Більше інформації про те, як використовувати TensorBoard, можна знайти в розділі Довідка.

З комерційної точки зору, коли користувач має представити свій аналіз групі зацікавлених сторін, ці діаграми ускладнюють обговорення. Можливо, вони не мають особливого значення. Однак, з академічної та навчальної точки зору, використання цих пакетів для відображення цих глибоких архітектур навчання має переваги. Візуалізатор ANN, на мій погляд, виділяється серед інших, оскільки його легко сприймати діаграму, тоді як висновок графіка TensorBoard вимагає додаткових технічних деталей, перш ніж можна буде використовувати результати.

Гавріков, П. (2022, 13 квітня). visualkeras для Keras / TensorFlow. GitHub. https://github.com/paulgavrikov/visualkeras

Георгіу, Т. (2022, 21 жовтня). Візуалізатор ANN. GitHub. https://github.com/RedaOps/ann-visualizer

Шах, А. (2018, 28 квітня). Візуалізація штучних нейронних мереж (ШНМ) за допомогою лише одного рядка коду. Середній. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Переповнення стека. (n.d.). машинне навчання — Як ви візуалізуєте архітектури нейронних мереж? Data Science Stack Exchange. Отримано 29 жовтня 2022 р. з https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Команда, К. (n.d.). Документація 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

Як візуалізувати архітектури нейронних мереж у Python Опубліковано з джерела https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 через https:// towarddatascience.com/feed

<!–

->

Часова мітка:

Більше від Консультанти з блокчейнів