• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Методические указания по созданию простейшей модели нейронной сети

rand

CooL-Lamer
Эксперт
Регистрация
24.05.2023
Сообщения
581
Реакции
1 152
Депозит
0.07 Ł и др.
Всем привет, данная методичка была взята у одного препода в универе в котором я учился. Может кому будет интересно, увы, кодовая база в скриншотах, да и текст как-то странновато написан и тема сисек раскрыта не полностью=) Попозже попробую повторить и переделаю код в текст.
В данной методичке мы познакомимся с основами построения нейронной модели, а также попробуем её обучить, используя датасеты с данными.
Перед началом работы, обязательно удостоверьтесь что у вас есть права администратора, это позволит воспользоваться всеми возможностями компьютера, которых не будет без этих прав.
Стэк технологий которые с которыми мы будем работать:

Таблица 1 – Список технического оборудования (конфигурация системы которую использовал преподаватель)
Железо/ Прогр. Обеспеч.ВерсияОписание
Windows 11 64-bit22H2Операционная система, выпущенная Microsoft, представляет собой последнюю версию линейки операционных систем Windows
AMD Ryzen 74800HSПредставляет собой процессор, разработанный и выпущенный компанией Advanced Micro Devices (AMD). Этот процессор предназначен для высокопроизводительных настольных и
мобильных систем.
NVIDIA GeForce GTX
1650ti​
Графический процессор (GPU), производимый компанией NVIDIA и предназначенный для использования в геймерских компьютерах, ноутбуках и рабочих станциях.

Таблица 2 – Список используемых библиотек и технологий
Приложение/ библиотекаВерсияОписание
Microsoft Visual Studio Code1.18.5Среда разработки, где можно использовать язык программирования Python для последующего создания нейронной сети.
Miniconda323.9.0Облегченная версия дистрибутива Conda. Является пакетным менеджером и средой управления пакетами для языков программирования, в нашем случае для Python. Conda позволяет легко устанавливать, обновлять и управлять зависимостями пакетов и окружениями.
TensorFlow2.6.0Открытая библиотека машинного обучения, разработанная и поддерживаемая Google. Предназначена для построения и обучения различных моделей машинного обучения, особенно для задач работы с данными, связанными с искусственным интеллектом и глубоким обучением.
Numpy1.23.0Библиотека с открытым исходным кодом для языка программирования Python. Возможности: поддержка многомерных массивов; поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
Matplotlib3.7.0Библиотека на языке программирования Python для визуализации данных двумерной графикой. Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях.
Pillow10.1.0Библиотека Python для работы с изображениями. Предоставляет простой и удобный интерфейс для открытия, обработки и сохранения различных форматов изображений.
Protobuf3.17.2Метод сериализации данных, разработанный Google. Протокол предоставляет эффективный и универсальный способ обмена структурированными данными между разными системами и языками программирования. Используется для передачи данных между компонентами распределенных систем, обмена сообщениями в сетевых протоколах и хранения данных.
Python3.9.18Высокоуровневый, интерпретируемый, объектно-ориентированный язык программирования.
cuDNN NVIDIA8.2.1Библиотека примитивов с ускорением на GPU для глубоких нейронных сетей. cuDNN предоставляет хорошо настроенные реализации для стандартных процедур, таких как прямая и обратная свертка, объединение, нормализация и уровни активации.
CUDA Toolkit11.3.1Набор инструментов NVIDIA® CUDA® Toolkit предоставляет среду разработки для создания высокопроизводительных приложений с ускорением на GPU.

Подготовка платформы для начала работ
Теоретическая часть по вычислительным мощностям применяемых в машинном обучении:
Обучение нейронных сетей по железной части обычно включает использование специализированных процессоров и ускорителей, таких как графические процессоры (GPU), тензорные процессоры (TPU), аппаратные ускорители для машинного обучения, а также процессоры общего назначения
(CPU). Вот более подробное описание различных методов обучения нейронных сетей в железной части:

Процессоры общего назначения (CPU):
Универсальные вычисления: Процессоры общего назначения, такие как Intel Core или AMD Ryzen, предоставляют универсальные возможности для обучения нейронных сетей и широкий спектр обработки задач.
Многозадачность: CPU эффективно обрабатывают множество задач одновременно, что полезно в контексте обучения нейронных сетей.
Графические процессоры (GPU):
Параллельные вычисления: Графические процессоры предназначены для обработки графики, и их параллельная архитектура делает их эффективными для обучения нейронных сетей, которые требуют интенсивных вычислений.
CUDA и OpenCL: Программные интерфейсы, такие как CUDA (для NVIDIA GPU) и OpenCL (для различных GPU), позволяют разработчикам программировать графические процессоры для выполнения операций машинного обучения.
Тензорные процессоры (TPU):
Оптимизированные для тензорных операций: Тензорные процессоры, такие как Google TPU, созданы специально для выполнения операций, связанных с тензорами, используемыми в глубоком обучении.
Ускорение инференса и обучения: TPU могут быть использованы как для обучения, так и для инференса (применения обученной модели к новым данным).
ASIC (Application-Specific Integrated Circuit):
Специализированные чипы: ASIC представляют собой специализированные интегральные микросхемы, разработанные для выполнения конкретных вычислительных задач. В области машинного обучения могут использоваться ASIC, оптимизированные для операций нейронных сетей.
FPGA (Field-Programmable Gate Array):
Программируемые чипы: FPGA обеспечивают гибкость программирования на уровне аппаратного обеспечения. Они могут быть программированы для выполнения различных вычислительных задач, включая операции нейронных сетей.
В нашем случае нам подходит 2 типа железных мощностей это СPU и GPU, в данной методических указаниях мы рассмотрим эти два вида и сравним их в сложности настройке и в скорости обучения нейронной сети.

Теоретическая часть по популярным библиотекам используемых в создании нейронных сетей:

Существует множество библиотек и фреймворков для создания нейронных сетей, предоставляющих разработчикам мощные инструменты для проектирования, обучения и развертывания искусственных нейронных сетей. Вот несколько популярных библиотек, используемых в создании нейронных сетей:
1. TensorFlow:
Описание: Разработана компанией Google. TensorFlow предоставляет открытый исходный код и широкие возможности для создания различных типов нейронных сетей. Имеет обширное сообщество и много ресурсов для обучения.
Особенности: Гибкость, масштабируемость, поддержка для различных уровней абстракции, включая Keras (встроен в TensorFlow).
2. PyTorch:
Описание: Разработана Facebook. PyTorch является фреймворком с открытым исходным кодом, который активно используется в исследовательских проектах и становится все более популярным в индустрии.
Особенности: Динамический вычислительный граф, интуитивный интерфейс, легко использовать для исследований.
3. Keras:
Описание: Изначально разработана как высокоуровневый интерфейс поверх TensorFlow, Keras теперь поддерживается и другими библиотеками, включая Microsoft Cognitive Toolkit (CNTK) и Theano.
Особенности: Простота использования, понятный интерфейс, хорошая абстракция для быстрого создания моделей нейронных сетей.
4. MXNet:
Описание: Проект Apache MXNet предоставляет гибкий и эффективный фреймворк для глубокого обучения. Он широко используется в индустрии иисследовательских проектах.
Особенности: Масштабируемость, поддержка различных уровней абстракции, включая Gluon, и хорошая производительность.
5. Caffe:
Описание: Caffe является быстрым и эффективным фреймворком для глубокого обучения, который изначально разрабатывался в университете Беркли.
Особенности: Простота использования, высокая производительность в обработке изображений.
6. Theano:
Описание: Theano был одним из первых фреймворков для глубокого обучения, но его активная разработка была прекращена. Однако, он все еще используется в некоторых проектах.
Особенности: Эффективность, оптимизация для работы с GPU.
7. CNTK (Microsoft Cognitive Toolkit):
Описание: Разработан Microsoft. CNTK предоставляет мощные инструменты для обучения глубоких нейронных сетей и был использован в различных исследованиях и приложениях Microsoft.
Особенности: Высокая производительность, поддержка для различных моделей.
Для создания своей модели нейронной сети был выбран TensorFlow из-за своего обширного сообщества позволяющий нам найти множество информации по созданию собственной модели нейросети, а также огромного ресурсного и функционального потенциала при её обучении и настройке.

Скачиваем и устанавливаем необходимый набор ПО
Для начала скачаем IDE для работы с кодом, в нашем случае это будет всем известный Visual Studio Code (ссылка на скачивание): https://code.visualstudio.com/

Нажимаем кнопку Dowload for Free, и ожидаем окончания загрузки файла
(Рисунок 1).
1729564604658.png

Рисунок 1 – Скачиваем Visual Studio Code

Далее устанавливаем программу оставляя все галочки по умолчанию. По окончанию установки не запускаем программу и жмем кнопку завершить (Рисунок 2).
1729564709005.png

Рисунок 2 – Завершение установки​
Теперь у нас появляется два этапа как дальше продолжить построение платформы, для этого перейдем на официальный сайт TensorFlow и посмотрим, что там говорят по установке и настройке для работы с их библиотекой (ссылка на сайт): https://www.tensorflow.org/install/pip?hl=ru#windows-native
Как мы видим из представленной статьи на их сайте, для нас на Windows 11 есть 1 вариант установки TensorFlow + СPU и 2 варианта установки TensorFlow + GPU:
1. Это нативная установка, где все компоненты мы устанавливаем целиком на наш компьютер, но обращая внимание на примечание мы видим, что начиная с версии TensorFlow 2.10 и выше, появляются дополнительные особенности при установке и могу возникнуть проблемы (Рисунок 3).


1729564996261.png

Рисунок 3 – Установка TensorFlow + CPU нативно на Windows

2. Тоже нативная установка, но обращая внимание уже на красную пометку мы видим, что начиная с версии TensorFlow 2.11 и выше не поддерживает графический процессор на нативном уровне, а это значит, что улучшения добавленные в новых версия нам не будут доступны в нативной версии (Рисунок 4).
1729565213476.png

Рисунок 4 – Установка TensorFlow + GPU нативно на Windows
С помощью Windows WSL2, это что-то вроде обертки Linux под Windows позволяющий запускать на системе Windows, Linux нуждающиеся программы. C помощью этой обертки мы уже можем пользоваться более новыми версиями и функциями для связки установки TensorFlow + GPU (Рисунок 5).

1729565474712.png

Рисунок 5 – Установка TensorFlow + GPU через Windows WSL2
Ну всё, с не большой теорией мы разобрались, и теперь вы наверное уже пришли к выводу, что если нам нужно более новые версии TensorFlow мы должны работать через Windows WSL2 для GPU и CPU, а если нужны старые, то можно и нативно, но только до определённой версии с GPU, а на CPU это не распространяется, c этим убеждением я с вами соглашусь на 100%, но все это было бы просто замечательно если это на этом было бы всё, но к примеру при работе с нативной версией GPU нам придется разбираться с различными версиями и их совместимостью.
Так как, мы просто не можем скачать IDE, установить через pip Tensorflow и сразу начать работать, если мы хотим использовать GPU нативно, нам нужны определённые драйвера, в нашем случае от компании NVIDIA. Для этого даже была составлена таблица от самих создателей Tensorflow (Рисунок 6).

1729565665845.png

Рисунок 6 – Таблица с проверенными комбинациями драйверов, версий языков и библиотек для работы с GPU​

Хочется отметить, что эта таблица не единственная, есть такая же только уже для CPU (Рисунок 7).
1729565926043.png

Рисунок 7 – Таблица с проверенными комбинациями драйверов, версий языков и библиотек для работы с CPU

В нашем случае нам не нужна последняя версия библиотеки TensorFlow, поэтому мы будем нативно устанавливать все необходимые нам инструменты и библиотеки, по уже проверенной таблице.
Но в тоже время вы спросите сами себя, почему бы нам не выбрать Windows WSL2, и будете в чем-то правы, мы можем накатить более последнюю версию библиотеки, но уже там придется подбирать самому все драйвера и версии по совместимости, так как таких проверенных таблиц как рисунок 6-7 нету, и тут вы выходите в открытое плаванье с перебором разных версий той или иной программы и библиотеки, что сильно усложнит процесс.


Установка TensorFlow + GPU
Перейдя к инструкции по установке TensorFlow + GPU нативно, мы видем что надо проверить установлены ли все Microsoft Visual C++ для Visual Studio 2015, 2017 и 2019 для вашей платформы, у меня это уже установлено поэтому я перехожу к следующему шагу, но если у вас нет то установите их (ссылка на установку): https://learn.microsoft.com/ru-RU/cpp/windows/latest-supported-vc-redist?view=msvc-170

В следующем шаге надо скачать и установить miniconda3, что мы и делаем (ссылка на скачивание): https://docs.conda.io/projects/miniconda/en/latest/

Нажимаем на файл как показано на рисунке 8.

1729566354844.png

Рисунок 8 – Скачиваем файл программы miniconda3​

Обратите внимание что при установке miniconda3, папка пользователя в каталоге Users, не должна иметь название на русском языке, её название должно быть на английском языке, во избежание конфликтов.

После установки открываем поиск и пишем miniconda3, и в результатах поиска выбираем Anaconda Powershell Prompt (Рисунок 9).
1729566498655.png

Рисунок 9 – Открываем miniconda3
В открытом окне пишем команду и нажимаем Enter: conda create --name tf_gpu tensorflow-gpu

1729566675759.png

Рисунок 10 – Реализация команды​

После того как всё скачалось и установилось, активируем конду через команду: conda activate tf_gpu.
Далее используем команду: conda list
И начинаем проверять какие файлы установились, искать надо только основные, а это:
Код:
Cudatoolkit, cudnn, numpy, pip, protobuf, python, tensorflow, tensorflow-gpu
На рисунке 11, показано как применены команды и частичный список установленных файлов.

1729566907761.png

Рисунок 11 – Команда активации и списка установленных файлов​

В моем случае всё установилось правильно, только версия у нас numpy 1.26.2, а нужна 1.23.0, поэтому используем команду (Рисунок 12): pip install Numpy==1.23.0

1729567180747.jpeg

Рисунок 12 – Установка Numpy 1.23.0
Далее нам подсказывает сама консоль, что не хватает keras версии >=2.4.0, поэтому мы установим его, команда (Рисунок 13): pip install keras==2.6.0

1729567375914.jpeg

Рисунок 13 – Установка keras 2.6.0

Остается только второстепенные файлы и их команды:
Bash:
pip install flatbuffers==1.12
pip install absl-py==0.10

После этой команды появляется не совместимость с google-auth но это мы исправляем командой: pip install google-auth==1.9
Далее: pip install clang==5.0

И на последок установим Matplotlib версии 3.7, он поможет нам в будующем при создании окна для рисования, команда: pip install Matplotlib==3.7

Теперь деактивируем конду командой: conda deactivate
И запускаем Visual Studio Code, для проверки работы TensorFlow + GPU

После запуска сразу переходим в панель плагинов и устанавливаем Python и Russian Language Pack, первый нам нужен для того, чтобы работать с языком Python, второй что бы русский язык был в Visual Studio Code (Рисунок 14).

1729567652650.png

Рисунок 14 – Установка необходимых плагинов
Теперь смело нажимаем создать файл и выбираем файл Python (Рисунок 15).

1729567816189.png

Рисунок 15 – Создание проекта на языке Python​

В новом проекте пишем вот такой код (Рисунок 16):
Python:
import tensorflow as tf
# Проверка доступности GPU
if tf.test.gpu_device_name():
    print("GPU доступен.")
else:
    print("GPU не доступен.")
# Проверка доступности CPU
if tf.config.list_physical_devices('CPU'):
    print("CPU доступен.")
else:
    print("CPU не доступен.")

1729568153699.png

Рисунок 16 – Код для проверки TensorFlow + GPU​

Перед запуском обязательно выберете нужный нам интерпретатор, в нашем случае это Python 3.9.18 (‘tf_gpu’), как это можно сделать показано на рисунке 17

1729568319195.png

Рисунок 17 – Выбор интерпретатора Python 3.9.18 (‘tf_gpu’)​

Теперь сохраняем файл, через меню файл – сохранить как, и запускаем наш код.

Если в ответе в консоли будет возвращать информацию о видеокарты и фразу GPU доступен, то TensorFlow + GPU работает и использует установленные CUDA и cuDNN правильно (Рисунок 18).
Так же код возвращает доступность TensorFlow + СPU, но это условно, так как если к GPU не подключается, то по умолчанию начинает работать CPU, а он работает в любом случае, если есть установленый TensorFlow любой версии.

1729568524285.png

Рисунок 18 – Проверка работы TensorFlow + GPU

Установка TensorFlow + CPU
Теперь давайте для проверки скорости и сложности настройки установим также и все зависимости для CPU. Для этого откроим так же поиск и напишем miniconda, далее откроим то, что показано на рисунке 19

1729568821242.png

Рисунок 19 – Открываем miniconda3​

Теперь в консоли пишем команду и устанавливаем (Рисунок 20): conda create --name tf_cpu tensorflow

1729569034534.png

Рисунок 20 – Реализация команды​

После того как всё скачалось и установилось, активируем конду через команду: conda activate tf_cpu.
Далее используем команду: conda list
И начинаем проверять какие файлы установились, искать надо только основные, а это:
Код:
Numpy, pip, protobuf, python, tensorflow

На рисунке 21, показано как применены команды и частичный список установленных файлов.

1729569238238.png

Рисунок 21 – Команда активации и списка установленных файлов​

Так же установим Matplotlib версии 3.7, он поможет нам в будующем при создании окна для рисования, команда: pip install Matplotlib==3.7

1729569375637.png

Рисунок 22 – Установка Matplotlib 3.7
После окончания установки библиотеки Matplotlib деактивируем конду командой: conda deactivate
Открываем Visual Studio Code, и то же проект что мы делали для GPU, код тоже берем из раздела про GPU.

1729568153699.png

Рисунок 23 – Код для проверки TensorFlow + CPU

Перед запуском обязательно выберете нужный нам интерпретатор, в нашем случае это Python 3.10.13 (‘tf_cpu’), как это можно сделать показано на рисунке 24

1729570137334.png

Рисунок 24 – Выбор интерпретатора Python 3.10.13 (‘tf_cpu’)​

Теперь проверим есть ли доступность к CPU и GPU, в этот раз должно показать, что GPU не найдено (Рисунок 25)

1729570306948.png

Рисунок 25 – Проверка доступности​

На этом часть подготовки конфигурации закончена.

Создание модели нейронной сети по распознаванию рукописных цифр в реальном времени

Что бы создать уже обученную нейронную сеть, которая сможет распознать или структурировать определённые данные нам нужны 3 основные вещи, это:
1. DataSet с данными:
В нашем случае это будет набор данных MNIST состоящий из различных рукописных цифр в размере 60 тыс. разбитых по папкам для каждой вариации цифры от 0 до 9 (Рисунок 26).
Файл с цифрами будет прикреплен с этой методичкой. (Я его потом прикреплю).

A913xglgc_1dys806_aa4.png

Рисунок 26 – DataSet из рукописных цифр

2. Сама модель нейронной сети:
В нашей задачи по распознаванию рукописных цифр нам идеально подходит сверточная нейронной сеть с применением Pooling (Рисунок 27).

1729573404354.png

Рисунок 27 – Топология сверточной нейронной сети
Примечание!! Сверточная нейронная сеть — это не единственный подход для построений нейронов в модели машинного обучения, их существует огромное множество, и для большего понимания рекомендуется ознакомится с этой информации в более специализированных источниках информации посвященных изучению для каких задач берутся те или иные подходы в построение нейронных сетей.
3. Проверка работоспособности обученной модели:
В приведённом примере ниже мы будем использовать холст для рисования рукописных цифр, после чего нам будет выдаваться ответ, о том, как понимает и распознает нашу цифры уже обученная нейронная сеть (Рисунок 28).

1729573687645.png

Рисунок 28 – Холст для проверки распознавания

Теория применение метода Pooling в сверточной нейронной сети
Конвергентные (сверточные) нейронные сети предназначены для работы с изображениями. Основной задачей при работе с изображениями является распознавание различных объектов на изображении, таких как люди, животные, цифры, буквы и так далее.
Однако очень трудно найти что-то в изображении, если рассматривать каждый пиксель по отдельности. Вместо этого сверточные нейронные сети используют скользящие окна (также известные как ядра), которые рассматривают группы пикселей. Предполагается, что нейронная сеть будет распознавать небольшие особенности, такие как "края" или "кривые". После распознавания можно использовать комбинацию краев и кривых в другом слое для определения формы (квадрат, круг или другие более сложные формы).
Рассмотрим данный процесс на теоретическом изображении цифры, в нашем случае – числа 2, с моделируя на нем пиксели (рисунок 29).


1729573926501.png

Рисунок 29 – Разбиение изображения числа 2 на условные пиксели​

Предположим, что каждый квадрат — это пиксель. Для начала свертки возьмем произвольное квадратное окно со стороной в n пикселей. Эти свойства объединяются в одну новую карту характеристик.

Затем операция повторяется путем перемещения окна для получения новой карты характеристик (рисунок 30).

1729574097479.png

Рисунок 30 – Перемещение карты характеристик по изображению​

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

По итогу получим данные по картам характеристик (рисунок 31) с расставленными индексами степени приоритизации в зависимости от количества вхождений нашей цифры 2 в область генерируемой карты характеристик.


1729574257621.jpeg

Рисунок 31 – Данные по картам характеристик в зависимости от покрытия искомой цифры​

Теперь мы будем делать пулинг (или операцию подвыборки). Допустим, наша ранее проделанная с помощью карт характеристик свертка дала следующую матрицу, представленную на рисунке 32.

1729574431426.jpeg

Рисунок 32 – Матрица свертки обрабатываемого изображения Сейчас берем окно для пулинга (или фильтра) размером 3x3.​

Самая распространенная форма операции пулинга называется макспулинг (Max-pooling).
В данном случае мы просто берем максимальное число (это число является весом, описывающим степень совпадения искомого элемента изображения, в нашем случае – цифры 2) из окна нашей матрицы, и оно становиться новым значением этого сегмента (рисунок 33).

1729574613892.jpeg

Рисунок 33 – Выбор максимального значения методом макспулинга​

Продолжая данный процесс до конца, мы получим примерно то, что изображено на рисунке 34. Так примерно и выглядит процесс распознавания сверточной нейронной сетью различных объектов, которые мы используем в своей работе для распознавания рукописных цифр.
Во многих случаях один или несколько полностью связанных слоев могут быть размещены после слоя свертки, с дополнительным выходным слоем. Однако выходной слой также может быть размещен сразу после слоя свертки.
По сути, сверточная нейронная сеть сначала ищет низкоуровневые объекты, такие как линии и кривые, затем их комбинации и так далее.


1729574837826.jpeg

Рисунок 34 – Полученная подвыборка методом макспулинга матрицы весов необходимая для снижения размерности входного тензора

Листинг кода
Для начала пропишем модули (библиотеки), которые нам нужно подключить для использования возможностей Tensorflow, MatPolib и Path (рисунок 35).

1729574987658.png

Рисунок 35 – Подключаемые модули.​

Начнем составлять описывать путь для данных и их свойства, такие как Аугментация (Рисунок 36).

1729575194434.png

Рисунок 36 – Аугментация и загрузка данных​

Далее для обучения нам нужно поделить данные на тренировочные и валидационные, на одних база данных будет себя тренировать, а на других проверять, выводя отчет как она узнает те или иные цифры, т.е. процент ошибок и процент точности (Рисунок 37).

Данные будут поделены в соотношении 80/20, 80 процентов – тренировочные, 20 процентов – валидационные.

1729575346214.png

Рисунок 37 – Создание тренировочного и валидационного набора данных​

Теперь надо добавить необходимые свойства которые помогут улучшить и оптимизировать обучения модели при работе с тренировочным и валидационным набором данных (Рисунок 38).

1729575578194.jpeg

Рисунок 38 – Необходимые свойства по оптимизации тренировочного и валидационного набора данных​

Переходим к одному из самых главных вещей в создании нейронной сети, а это создание модели с нейронами (Рисунок 39).

1729577474493.jpeg

Рисунок 39 – Создание модели с нейронной сети​

Далее надо создать ещё два метода один для компиляции модели, второй для свойств обучения модели (Рисунок 40).

1729578402107.png

Рисунок 40 – Компиляция и свойства обучения модели​

На этом моменте мы уже написали все составляющие модели нейронной сети, и она является готовой.
Переходим к проверке работоспособности модели, для этого будем создавать холст для рисования, создадим новый класс DrawingApp, и опишем первый метод __init__ (Рисунок 41)

1729578800444.png

Рисунок 41 – Компиляция и свойства обучения модели​

Теперь допишем методы для рисования курсором, очистки холста, распознавания цифры и получения самого изображения с холста (Рисунок 42)

1729579035141.png

Рисунок 42 – Создание методов для рисования курсором, очистки холста, распознавания цифры и получения самого изображения с холста.​

И в заключении создаем окно и отображаем его на экране (Рисунок 43)
1729579199775.png

Рисунок 43 – Создание окна и отображение его на экране

Тесты и визуализация результата

Исходные конфигурации для тестов нейронной сети:
  1. Одинаковый исходный код
  2. Количество эпох равное 5

Тесты и визуализация результата

TensorFlow + СPU

Для тестирования работоспособности СPU при обучении нашей нейронной сети выбираем интерпретатор Python 3.10.13 (‘tf_cpu’).

Время, затраченное на обучения каждой из 5 эпох (Рисунок 44)

1729579562501.png

Рисунок 44 – Затраты времени при использовании CPU

TensorFlow + GPU
Для тестирования работоспособности GPU при обучении нашей нейронной сети выбираем интерпретатор Python 3.9.18 (‘tf_gpu’).
Время, затраченное на обучения каждой из 5 эпох (Рисунок 45)

1729579770909.png

Рисунок 45 – Затраты времени при использовании GPU

Итог
Как мы видим разница в скорости обучения практически в 2 раза, что позволит обучать и создавать различные нейронные сети быстрее, что на счет качества распознавания, то они довольно скудные при 5 эпохах Val_loss: 0.23 что очень много, с таким результатом из 10 цифр нейронная сесть распознает только 3 цифры. Для улучшения результата повысив количество эпох до 10, и проверим результат (Рисунок 46).

1729580463191.png

Рисунок 46 – Результат 10 эпох

Как мы видим увеличение количества эпох до 10 улучшило распознавание Val_loss: 0.18, с таким результатом из 10 цифр нейронная сесть распознает уже 5 цифр, что может не радовать (Рисунок 47).

1729580719951.png

Рисунок 47 – Результат распознавания​
 
Последнее редактирование:
Конечно нейронная сеть, распознающая цифры – интересно, но хотелось бы увидеть работу с более интересными сценариями/вариант интеграции в более крупный проект
 
Перед началом работы, обязательно удостоверьтесь что у вас есть права администратора, это позволит воспользоваться всеми возможностями компьютера, которых не будет без этих прав.
Золотые слова, куда же без этого в нашем деле.


За труд конечно спасибо тебе, ты решил открыть школу для кодеров?

Вчем твоя мотивация?
 
За труд конечно спасибо тебе, ты решил открыть школу для кодеров?
Нет. Меня спросили в ПМ нет ли у меня чего по этой теме, у меня оказалась методичка из одного универа в РФ по обучению простейшей нейросети. Подобных тем я на форуме не видел и раздел AI/ML очень слабо развит на форуме, я решил опубликовать для всеобщего понимания и развития.

Также по уже обученной модели распознования изображений "BLIP-2" я летом публиковал статью по созданию AI бота генерирующего мемы в ТГ: https://xss.pro/threads/117407/
 
Нет. Меня спросили в ПМ нет ли у меня чего по этой теме, у меня оказалась методичка из одного универа в РФ по обучению простейшей нейросети. Подобных тем я на форуме не видел и раздел AI/ML очень слабо развит на форуме, я решил опубликовать для всеобщего понимания и развития.

Также по уже обученной модели распознования изображений "BLIP-2" я летом публиковал статью по созданию AI бота генерирующего мемы в ТГ: https://xss.pro/threads/117407/
AI/ML сейчас топ тема, много денег в ней крутится, ты сейчас много белых спецов привлечешь на форум.

Нет. Меня спросили в ПМ нет ли у меня чего по этой теме, у меня оказалась методичка из одного универа в РФ по обучению простейшей нейросети. Подобных тем я на форуме не видел и раздел AI/ML очень слабо развит на форуме, я решил опубликовать для всеобщего понимания и развития.

Также по уже обученной модели распознования изображений "BLIP-2" я летом публиковал статью по созданию AI бота генерирующего мемы в ТГ: https://xss.pro/threads/117407/
AI боты уже захватили соц сети.
 
Для того чтобы "поиграться" или начать изучать создание моделей, лучше подойдет стэк типа python+pytorch, потому что в нём меньше гемора, нежели в tensorflow, как минимум с видеокартами всё в разы проще. Для теста и обучения модели можно юзать google colab, чтобы не напрягать свою машинку.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх