Skip to content

Реализация многослойной нейронной сети на Python для распознования чёрно-белого изображения 4 на 4, а также изучения самой нейронной сети

License

Notifications You must be signed in to change notification settings

Requiem4soul/neural-networks-2

Repository files navigation

Neural Network (Нейронная модель) — Распознавание изображения 4x4 (классификатор)

Данный проект реализует обучение простой двухслойной нейронной сети для распознавания одного конкретного черно-белого изображения размером 4x4 пикселя. В качестве функции активации взята сигмоидальная функция

📦 Установка и запуск

  1. Убедитесь, что у вас установлен uv. Если не установлен, то есть подробная простая инструкция на сайте uv :

  2. После установки выполните данный команды запустив powershell из рабочей папки (открыть папку проекта и в пути (там где C:/...) ввести powershell):

    uv sync
    uv lock
  3. Укажите своё целевое изображение в Input/base_input_data.py:

    My_img = np.array(
    [1, 0, 0, 1,
    1, 0, 0, 0,
    0, 0, 0, 1,
    1, 0, 0, 1], dtype=np.uint8)
  4. При необходимости измените параметры в main.py:

     # Параметры
     POROG = 0.5 # Порог активации выходного нейрона
     DATASET_CHOISE = "Large"  # Low - малый датасет, Medium - средний датасет, Large - большой датасет
     EPOCH = 200 # Количество эпох
     LEARNING_RATE = 0.01 # Коэфицент скорости обучения
     HIDDEN_NEURONS = 8 # Количество скрытых нейронов в скрытом слое
    
     LOG = False # Более подробный вывод
     BUFFER_RANGE = 10 # Количество эпох без роста точности, после которого обучение заканчивается
  5. Запустите основной скрипт обучения через uv:

    uv run main

🧠 После обучения

  1. Ознакомьтесь с информации в "main.py" после обучения, в которой будет указано насколько точно данные веса могут определить нужное изображение из всех 65 тыс. штук возможных и укажет какие были ложные срабатывания

  2. Для вывода весов нейронов с их биасами:

    • Откройте скрипт "show_weights.py" и запустите его
    • Укажите путь до нужных весов:
      file_path = "Data/Storage/Saves/training_20250525_225237/weights/weights_final_20250525_225237.npz"
  3. Итоговые веса сохраняются в:

    Data/Storage/Saves
    

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

    изображение изображение изображение изображение изображение изображение

    Также вы можете посмотреть график обучения (точность за эпоху). Начинаться будет примерно с той же точностью, насколько у вас разделён датасет в "Data/Storage/generate_dataset.py", так как большинство не активируются и будут в классе "НЕ 1"

    training_accuracy

    В папке с сохранёнными данными вы можете найти мета данные об обучение (количество скрытых нейронов, кол-во эпох, какой коэффициент обучения и так далее)

    изображение


Разработано для учебных целей. Все параметры можно свободно настраивать. Поставьте пожалуйста звезду, если вам помогла данная программа ⭐

About

Реализация многослойной нейронной сети на Python для распознования чёрно-белого изображения 4 на 4, а также изучения самой нейронной сети

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages