September 12

GraphNet: узлы и блоки

🤖 Добро пожаловать в мир нейросетей!

Представь, что у тебя есть большой набор Лего. Из деталей можно построить дом, машину, космический корабль или даже целый город.
А теперь вообрази, что у нас есть не обычные кубики, а особые блоки – они умеют читать данные, учиться, предсказывать и запоминать результаты.

Эти блоки – это части нейросети. Когда мы соединяем их стрелочками, они начинают работать вместе, как одна большая команда.
Можно собрать нейросеть, которая узнаёт цифры на картинках, угадывает, что будет дальше в таблице, или даже предсказывает результаты игры!

Наш графовый конструктор – это как мастерская:

  • 🧩 ты выбираешь блоки,
  • 🔗 соединяешь их,
  • ⚡ и запускаешь сеть в работу.

Так шаг за шагом мы будем строить собственных умных помощников!

Прежде, чем приступить к проектированию нейросетей необходимо вспомнить теоретический минимум. Тетрадка GoogleColab, которая используется в видео для объяснения теоретического минимума.

Теоретический минимум, который необходим при работе с нейроконструктором и постронии нейросетей

Инструкция по установке

  1. Скачайте exe файл на компьютер: ссылка на установщик.
  2. Запустите файл.
    • Система может выдать ошибку при запуске из-за неизвестного издателя. Запустите в любом случае. Для этого нажмите ПодробнееВыполнить в любом случае
    • При запуске программы может быть задержка в 5-15 сек.
Установка и запуск конструктора нейросетей GraphNet

🔗 Принципы работы конструктора

В нашем конструкторе всё очень похоже на игру с деталями:

  • Каждый блок выполняет свою роль.
    🧩 Один умеет читать данные,
    🧠 другой — думать и учиться,
    🎯 третий — делать предсказания.
  • Блоки нужно соединять стрелочками — так информация «путешествует» от одного блока к другому.
  • У каждого блока есть вход (куда данные приходят) и выход (что блок отдаёт дальше).
  • Если соединить блоки правильно, получится цепочка шагов, которая превращает сырые данные в умный результат.

📌 Запомни: блоки — как участники команды. Каждый делает своё дело, но только вместе они становятся настоящей нейросетью!

🚪 Входной слой (стартовый блок)

Узел входного слоя нейросети
  • Что это: первая дверь, через которую данные входят в нейросеть.
  • Аналогия: как ворота на стадион – без них никто не зайдёт.
  • Важно: этот блок нельзя удалить и пересоздать – он всегда один и главный, создается вместе с холстом.

Узел входного слоя нейросети. Если его удалить, то нельзя создать заново. С него начинается создание нейросети и в нём указывается размерность входных в данных для нейросети. Аккуратнее не удалите его!

📊 Табличные данные

Узел табличных данных
  • Что это: блок, который читает данные из таблицы (CSV-файла).
  • Аналогия: как официант, который приносит еду с тарелками и подписывает, где чья.
  • Параметры:
    • shape – размер таблицы.
    • skip_header – пропустить заголовки у файла.
    • skip_footer - пропустить последнюю строку.
    • delimiter – разделитель (например, ; или ,).
    • files - путь к файлу.

Чтобы получить путь к файлу, скопируйте его у файла в компьютере через правую кнопку мыши (ПКМ):

Подключаемый файл может быть в формате CSV, TXT, главное, чтобы содержимое было как у CSV данных - значений с разделителем.

Узел табличных данных, читает все данные табличного ввида, в shape храниться их размерность.

🧩 Категориальные данные

Узел для перевода данных в категориальные
  • Что это: переводит текст или классы в числа, которые понимает нейросеть.
  • Аналогия: переводчик, который объясняет роботу: «кошка = 0, собака = 1».
  • ⚙️ Параметры:
    • num_classes — количество категорий.

Узел для перевода данных в категориальные, num_classes - количество возможных категорий

Полносвязный слой

Узел полносвязного слоя нейросети

Что делает: это слой, где каждый нейрон соединён со всеми входами. Он получает всю информацию сразу и учится находить в ней закономерности.

Аналогия:
Представь класс, где учитель задаёт вопрос. Каждый ученик слышит вопрос и думает над своим ответом. Потом все вместе формируют общий результат.

Зачем нужен:

  • чтобы собрать воедино все признаки из предыдущих слоёв,
  • чтобы научиться принимать решения (например, «это кошка или собака?»),
  • часто используется в конце сети для финального ответа.

⚙️ Параметры:

  • units — сколько учеников в классе (нейронов),
  • activation — как они «отвечают» (например: уверенно или осторожно).

Узел полносвязного слоя нейросети, units - количество нейронов, activation - функция активации

🖼️ Свёрточный слой (2D)

Узел двухмерного свёрточного слоя нейросети
  • Что это: ищет узоры и фрагменты в картинках.
  • Аналогия: как лупа, которая «сканирует» кусочки изображения.
  • ⚙️ Параметры:
    • filters — сколько луп (фильтров),
    • kernel_size — размер квадратика,
    • strides — шаг движения,
    • padding — рамка вокруг картинки,
    • activation — функция активации.

Узел двухмерного свёрточного слоя нейросети, filters - количество ядер свёрток, kernel_size - размер стороны (квадрата), strides - длина шага, padding - обёртка вокруг исходного изображения, activation - функция активации.

🌊 Pooling-слой

Слой MaxPooling2D
  • Что это: уменьшает картинку, выбирая только главное.
  • Аналогия: как делать мини-версию фотографии.
  • ⚙️ Параметры:
    • pool_size — размер квадрата,
    • strides — шаг,
    • padding — рамка.

Слой нейросети MaxPooling2D, pool_size - стороны квадрата, strides - шаг, padding - обёртка

🤝 Слой объединения

Слой объединения
  • Что это: собирает воедино то, что пришло из разных блоков.
  • Аналогия: как корзинка, в которую складывают все яблоки с разных деревьев.

Слой объединения, объединяет все то, что в него приходит.

📏 Слой выпрямления (Flatten)

Слой выпрямления
  • Что это: делает из многомерного массива длинный список.
  • Аналогия: как если сложить бельё в одну ровную стопку.

Слой выпрямления, преобразует многомерные массив на входе в одномерный.

➕ Слой сложения

Слой сложения
  • Что это: складывает данные поэлементно.
  • Аналогия: как если у двух команд сложить очки игроков друг с другом.

Слой сложения, складывает массивы на входе поэлементно.


🎓 Узел обучения (Training)

Узел обучения
  • Что это: обучает нейросеть на примерах.
  • Аналогия: как тренировка у спортсмена — повторять действия много раз.
  • ⚙️ Параметры:
    • x, y — данные для обучения,
    • epochs — количество тренировок (итераций).

Узел обучения, обучает нейросеть, которая приходит на вход, x, y - данные для обучения, epochs - количество итераций обучения.


🛠️ Узел компиляции (Compile)

Узел компиляции
  • Что это: готовит модель к обучению.
  • Аналогия: как завязать шнурки перед бегом.
  • ⚙️ Параметры:
    • optimizer — способ учиться,
    • loss — как считать ошибку.

Узел компиляции (сборки) модели,optimizer - оптимизатор для обучения, а loss - лосс функция для обучения.


🔮 Узел предсказания (Prediction)

Узел предсказания

Что это: блок, который берёт обученную модель и новые данные, чтобы сделать прогноз.

Аналогия: как гадалка или оракул, но не магия, а математика 🙂

📌 Примеры:

Модель училась предсказывать оценки по таблице → даём новые данные → получаем прогноз: «будет 4 или 5».

⚙️ Параметры:

  • на вход передаётся модель и данные,
  • на выходе получаем результаты предсказания.

Зачем нужен: именно этот блок отвечает за то, чтобы сеть применяла полученные знания на практике.

Узел предсказания, модель передаётся на вход и делает предсказания по переданным в узел данным


💾 Сохранение модели (.keras)

Узел сохранения модели
  • Что это: сохраняет модель в файл.
  • Аналогия: как сохранить игру, чтобы потом продолжить.

Узел сохранения модели, сохраняет модель в виде .keras файла


📐 Узел метрик

Узел расчета метрики
  • Что это: блок, который проверяет, насколько хорошо работает модель. Он сравнивает правильные ответы и предсказания.
  • Аналогия: как учитель проверяет тетрадь ученика — смотрит, где ответы совпали, а где ошибки.
  • Зачем нужен: помогает понять, правильно ли работает нейросеть и где её нужно доучить.

📌 Пример:

  • Модель предсказывает, что на картинке «кошка», а правильный ответ — «кошка» → метрика точности растёт.
  • Если же модель ошиблась → метрика показывает, что нужно тренироваться больше.

⚙️ Параметры:

  • metric — что именно считаем (например, точность, ошибка, F1-score),
  • x, y — два массива для сравнения (правильные ответы и предсказания),
  • data — здесь сохраняется результат (чтобы потом его можно было сохранить в файл).
  • ⚙️ Параметры:
    • metric — что именно считать (например, точность),
    • data — результат сохраняется сюда.

Узел расчёта метрики: выбираете метрику которую хотите рассчитать, передаёте 2 массива, между которыми будете рассчитывать и в data напишется метрика, которую потом можно сохранить.


🖼️ Узел визуализации архитектуры (Model Visualization)

Узел визуализации архитектуры
  • Что это: блок, который рисует схему нейросети и сохраняет её картинкой.
  • Аналогия: как архитектор рисует план здания, чтобы было понятно, где комнаты и лестницы.
  • Зачем нужен: чтобы увидеть всю сеть целиком и понять, как она устроена.

📌 Пример:
Ты собрал сеть из нескольких слоёв → запускаешь этот блок → получаешь красивый чертёж, где видно, какие блоки связаны и как они работают.

⚙️ Параметры:

  • show_shapes — показывать ли размеры данных на входе и выходе слоёв,
  • show_layer_activations — показывать ли функции активации у слоёв.

Узел визуализации архитектуры модели, создаёт картинку архитектуры модели и сохраняет её, show_shapes - показывать размерности на входах \ выходах слоёв, show_layer_activations - показывать функции активации слоёв.

📂 Узел сохранения данных (Save Data)

Узел сохранения данных
  • Что это: блок, который сохраняет результаты работы нейросети — предсказания или метрики.
  • Аналогия: как тетрадь или дневник, куда ты записываешь свои оценки, чтобы потом их показать.
  • Зачем нужен: чтобы не потерять результаты и использовать их позже (например, для отчёта или анализа).

📌 Пример:

  • Нейросеть предсказала оценки по ученикам → сохраняем в файл, чтобы учитель посмотрел.
  • Посчитали точность работы модели → сохраняем метрику, чтобы сравнить с другой моделью.

⚙️ Параметры:

  • На вход подаются данные (предсказания или метрика),
  • На выходе — сохранённый файл с результатом.

Узел сохранения данных, можно сохранить результат предсказаний или рассчитанную метрику.


📜 Узел сохранения модели в JSON (Save Model as JSON)

Узел сохранения модели в JSON
  • Что это: блок, который сохраняет «чертёж» нейросети в текстовом формате JSON.
  • Аналогия: как записать рецепт блюда на бумаге — потом его можно повторить по шагам.
  • Зачем нужен: чтобы хранить структуру модели (какие слои и как соединены), а не сами обученные веса.

📌 Пример:

  • Ты собрал нейросеть из слоёв → сохранил её как JSON → через неделю можешь снова загрузить и обучить заново.

⚙️ Параметры:

  • На вход передаётся модель,
  • На выходе — JSON-файл со схемой сети.

Узел сохранения модели в виде JSON файла.

Практическая работа 1. Самая простая нейросеть (табличные данные → обучение → предсказание)

В видео ниже познакомимся с конструктором нейросетей GtaphNet на примере решения практической задачи линейной регрессии. Данные для задачи, которая разбирается в примере.

Практическая работа в конструкторе нейросетей GraphNet
🚪 Входной слой  
       ⬇  
📊 Табличные данные  
       ⬇  
🧠 Полносвязный слой (Dense)  
       ⬇  
🛠️ Компиляция (Compile)  
       ⬇  
🎓 Обучение (Training)  
       ⬇  
🔮 Предсказание (Prediction)  
       ⬇  
📂 Сохранение данных

📖 Что делает: читает таблицу → обучает сеть → делает предсказание → сохраняет результат.

Построение модели в конструкторе нейросетей.

Устройство узлов и работа с ними.

Чтобы загрузить наши данные, мы используем специальные «узлы» под названием Tables data. Они помогают работать с таблицами вроде нашей, где записаны температуры и количество рыб.

Cначала мы создаём три «коробочки с данными» — это специальные узлы:

  1. Тренировочные данные – здесь лежат параметры (в данном случае температура) – ваш файл x_train.
  2. Тренировочный таргет – это правильные ответы, то есть сколько было голомянок – файл y_train.
  3. Тестовые данные – для предсказания количества голомянок по температуре – файл x_test.

Мы загружаем нужные файлы в эти коробочки, нажимая Choose file….

Теперь важный шаг: нужно соединить форму данных (shape) из узла с тренировочными параметрами с узлом Input, который уже есть в редакторе. Это как будто мы говорим: «Вот такие данные будут входить в модель».

После этого создаём саму модель. Вспомним: нейрон — это почти как линейная формула, но иногда с добавкой под названием «функция активации». Если выбрать простую линейную активацию, то получится обычная линейная регрессия.

Для этого мы создаём узел Dense:

  • указываем units = 1 (значит, модель будет предсказывать одно число — количество голомянок),
  • ставим activation = linear (чтобы была линейная зависимость).

И соединяем этот узел с Input.

Дальше нам нужно скомпилировать нашу модель. Для этого есть специальный узел - Compile model. Соединим его вместе с Dense. Укажем loss = mean_absolute_error.

Теперь у нас есть модель, но она пока «пустая» — она не умеет предсказывать. Нужно запустить её обучение. Для этого мы добавляем специальный узел Fit model.

Дальше делаем соединения:

  • узел Compile model соединяем с входом self у Fit model (это как кнопка «готово к обучению»),
  • узел Table data (1) (там лежат наши параметры, например, температура) соединяем с входом x у Fit model,
  • узел Table data (2) (там правильные ответы — количество голомянок) соединяем с входом y у Fit model.

Получается, что модель берёт «температуру» как вход и «количество голомянок» как правильный ответ, и начинает учиться находить зависимость между ними.

Устройство узла

Когда модель учится, это происходит по кругу. Такой круг называется эпоха. На каждой эпохе модель сначала пытается предсказать данные, потом мы говорим ей, где она ошиблась, и она исправляет свои ошибки.
В нашей задаче точное число эпох не так важно. Но вообще, если эпох будет слишком много, модель «заучит» данные и перестанет работать на новых примерах (это называется переобучение). А если эпох будет слишком мало, она не успеет нормально научиться. Для примера поставим 500 эпох.

После обучения мы хотим проверить, насколько хорошо модель справляется. Для этого делаем так:

  1. Создаём узел Predict – он будет делать предсказания.
    • В поле self передаём модель после Fit,
    • в поле x передаём тестовые данные.
  2. Создаём узел Save data и подключаем к нему Predict, чтобы сохранить предсказания.

В итоге у нас получится цепочка:
Данные → Input → Dense → Compile → Fit → Predict → Save data.

Когда все узлы соединены, остаётся только запустить нашу схему. Для этого внизу нажимаем кнопку «Собрать модель».

Если всё сделано правильно, модель начнёт учиться и потом сделает предсказания.

В папке с проектом должен появиться файл result.txt — это и есть результат работы модели, то есть предсказанные количества голомянок.

Практическая работа 2. Проектируем нейросеть с несколькими слоями

Рассмотрим более сложный пример по проектированию нейросети. В нем будет несколько слоев. Данные для задачи, которая рассмотрена в примере. Посмотрите разбор примера внимательно. Подумайте, что влияет на качество модели? Как можно ее улучшить?

Прмер нейросети с несколькими слоями

📝 Вопросы и ответы по графовому конструктору GrahpNet


Что делать, если приложение GraphNet не работает?

Если при проектировании нейросети, в конструкторе GraphNet появилась ошибка и приложение отказывается работать, зафиксируйте ошибку и отправьте отчет разработчикам. Как это сделать описано в инструкции.

Ссылки на проект

⭐️ Поддержите проект звездочкой на github: https://github.com/jezvgg/graphNet

🚀 Следите за релизами: https://github.com/jezvgg/graphNet/releases