Як створити нейронну мережу на Пітоні: покрокова інструкція
Нейронні мережі – один з головних напрямків розвитку машинного навчання. Завдяки їх застосуванню можна вирішувати такі складні завдання, як розпізнавання людей на зображеннях чи відео, обробка тексту, точне моделювання та багато іншого. Сьогодні ми розглянемо, як створити просту нейронну мережу на Python, використовуючи бібліотеки TensorFlow та Keras.
Нейронна мережа або нейромережа — це комплекс програмних даних та інструментів, які імітують роботу людського мозку. Нейромережа складається з декількох рівнів (шарів) штучних нейронів, які обмінюються інформацією між собою, посилаючи сигнали. Штучні нейрони — це прості процесори, які об’єднавших між собою, здатні виконувати досить складні завдання.
Існують різні типи нейронних мереж, такі як прямопрохідні (Feedforward Neural Networks), згорткові (Convolutional Neural Networks, CNN) та рекурентні (Recurrent Neural Networks, RNN). На відміну від звичайних настільних чи мобільних додатків, нейромережі не програмуються, а обмежено самостійно навчаються. В них немає алгоритмічного коду, як в програмі. Під час навчання нейрони знаходять складні залежності між різними типами даних.
Зараз це важко уявити, але принцип навчання нейромереж був описаний ще в 1949 році вченим Дональдом Хеббом. Однак протягом наступних десятиліть ця ідея розвивалась лише в теоретичному напрямку: комп’ютерне обладнання було надто слабким для практичної реалізації. Лише у 80-х роках вчені зуміли створити першу комп’ютерну модель для розпізнавання абетки та поштових індексів. Далі технологія почала поступово удосконалюватись. Наприкінці 90-х комп’ютер навчили розпізнавати рукописний текст, нейронні мережі почали використовувати для виявлення раку молочної залози на мамограмах та моделювання структури білка.
Справжній прорив у розвитку та застосуванні нейромереж стався в 2011 році, коли нейромережа вперше перевершила людські можливості на конкурсі з розпізнавання візуальних образів. Паралельно йшов процес удосконалення комп’ютерного обладнання. Завдяки більш потужним графічним процесорам процес навчання нейромереж почав досягати нечуваних висот.
Серед десятків мов програмування Python виявився найбільш затребуваним, коли справа стосується створення та навчання нейронних мереж. Цьому є декілька причин. На перший погляд, може здатись, что все це через лаконічний синтаксис Python. І справді, код Python більш стислий, ніж, наприклад у Java. Але річ не в тім. Одна з головних причин, чому Пайтон такий популярний в розробці нейромереж, полягає в тому, що він має потужну екосистему бібліотек для розробки моделей машинного навчання. Це, в першу чергу, TensorFlow та Keras. Також до цього числа слід віднести PyTorch, scikit-learn, NumPy і Pandas.
Крім бібліотек, на користь Python грає активна спільнота, яка надає велику підтримку проектам у сфері штучного інтелекту. До того ж, Python дозволяє інтегруватися з мовами на зразок C++ та Fortran, які можна використовувати для обчислювально інтенсивних частин нейронних мереж.
Щоб створити нейромережу на Python, спочатку потрібно підготувати для цього відповідне середовище. Нам знадобиться встановити Python (якщо він у вас ще досі не встановлений) та основні бібліотеки.
Python можна завантажити на офіційному сайті. Для встановлення бібліотек TensorFlow та Keras запустіть наступну команду:
pip install tensorflow
Тепер переходимо до створення базової нейронної мережі для розпізнавання літер англійського алфавіту на Python. Ми будемо використовувати синтетичний набір даних, який можна створити самостійно, або можна завантажити попередньо створений набір, наприклад, EMNIST Letters, який містить зображення літер англійського алфавіту.
Передбачається, що що ми вже маємо готовий набір даних, розділений на зображення та відповідні мітки літер.
# Імпорт необхідних бібліотек import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten, Dropout from tensorflow.keras.utils import to_categorical from tensorflow.keras.datasets import emnist # Завантаження даних EMNIST (літери) (x_train, y_train), (x_test, y_test) = emnist.load_data(split='letters') # Нормалізація даних (перетворення значень пікселів у діапазон [0, 1]) x_train, x_test = x_train / 255.0, x_test / 255.0 # Перетворення міток у категорійний формат (кодування one-hot) y_train = to_categorical(y_train - 1, 26) # Віднімаємо 1, бо літери позначені від 1 до 26 y_test = to_categorical(y_test - 1, 26) # Побудова нейронної мережі model = Sequential([ Flatten(input_shape=(28, 28)), # Перетворення 28x28 зображень у вектори Dense(256, activation='relu'), # Прихований шар з 256 нейронами та ReLU Dropout(0.5), # Dropout для запобігання перенавчанню Dense(128, activation='relu'), # Ще один прихований шар Dropout(0.5), # Додатковий Dropout Dense(26, activation='softmax') # Вихідний шар з 26 нейронами (по одному на літеру) ]) # Компіляція моделі model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Навчання моделі model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2) # Оцінка моделі на тестових даних test_loss, test_acc = model.evaluate(x_test, y_test) print(f'Точність на тестових даних: {test_acc:.4f}')
Завантаження та підготовка даних:
Побудова моделі:
Компіляція моделі:
Використовуємо оптимізатор adam, функцію втрат categorical_crossentropy (оскільки у нас багатокласова класифікація) та метрику accuracy.
Навчаємо модель на 10 епохах із розміром пакету 64, з використанням 20% даних для валідації. Після цього оцінюємо точність моделі на тестових даних.
Процес навчання полягає в подачі на модель набору навчальних даних і налаштуванні ваг мережі для мінімізації функції втрат. Цей процес ітеративний і повторюється протягом певної кількості епох, протягом яких модель переглядає весь набір даних і оновлює ваги.
Під час навчання нейронна мережа проходить наступні кроки:
history = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_val, y_val))
Ця модель – лише початковий приклад. Щоб покращити результат, ви можете застосувати додаткові шари, використати інші методи регуляризації, або експериментувати з іншими гіперпараметрами, такими як розмір пакетів чи кількість епох.
Коли модель готова, її можна зберегти для подальшого використання, щоб не навчати кожного разу. Збережену модель можна розгорнути для використання в реальному часі або інтегрувати в додаток.
model.save("my_model.h5") # Збереження моделі у форматі HDF5
Варто пам’ятати, що оволодіння кількома базовими прикладами створення нейромереж не зробить з вас крутого спеціаліста. Для початку вам треба мати впевнені навички роботи з Python, знання лінійної алгебри та основ математичного аналізу. Нейронні мережі залежать від матриць, векторів та градієнтів, тому розуміння цих концепцій допоможе легше розуміти їх роботу.
Також вам доведеться ознайомитися з бібліотеками для машинного навчання: не тільки TensorFlow та Keras, але й PyTorch і scikit-learn. Далі треба вивчити базові концепції машинного навчання: регресію та класифікацію, обробку даних, попрактикуватися в роботі з готовими наборами даних: MNIST, CIFAR-10, Fashion MNIST. Навчитися класифікувати текст.
Коли ви перейдете до практики, починати краще з простих проектів: розпізнавання рукописних цифр чи класифікації сортів квітів. Якщо все вдається, тоді переходьте до більш складних завдань: побудови згорткової нейронної мережі (CNN) для класифікації зображень або рекурентної нейронної мережі (RNN) для аналізу послідовностей.
Поступово модифікуйте їх, додавайте більше шарів, змінюйте гіперпараметри або експериментуйте з іншими архітектурами. І лише після цього переходьте до проектів з реального життя: наприклад, розпізнавання об’єктів.
Створення простої нейронної мережі на мові програмування Python можливе завдяки використанню бібліотек TensorFlow та Keras. Наведені в цій публікації приклади демонструють базову нейронну мережу для класифікації літер. У наступний раз, для складніших завдань, можна додавати інші типи шарів, такі як згорткові (Conv2D), рекурентні (LSTM) та інші, щоб підвищити потужність моделі.
Ця стаття може стати основою для створення нейронних мереж, з неї ви можете почати вивчення більш складних архітектур: гіперпараметрів, додавання нових шарів чи створення глибших моделей для покращення результатів.
Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…
У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…
Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…
Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…
Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…
Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…