Данный проект реализует обучение простой двухслойной нейронной сети для распознавания одного конкретного черно-белого изображения размером 4x4 пикселя. В качестве функции активации взята сигмоидальная функция
-
Убедитесь, что у вас установлен uv. Если не установлен, то есть подробная простая инструкция на сайте uv :
-
После установки выполните данный команды запустив powershell из рабочей папки (открыть папку проекта и в пути (там где C:/...) ввести
powershell
):uv sync uv lock
-
Укажите своё целевое изображение в
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)
-
При необходимости измените параметры в
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 # Количество эпох без роста точности, после которого обучение заканчивается
-
Запустите основной скрипт обучения через uv:
uv run main
-
Ознакомьтесь с информации в "main.py" после обучения, в которой будет указано насколько точно данные веса могут определить нужное изображение из всех 65 тыс. штук возможных и укажет какие были ложные срабатывания
-
Для вывода весов нейронов с их биасами:
- Откройте скрипт "show_weights.py" и запустите его
- Укажите путь до нужных весов:
file_path = "Data/Storage/Saves/training_20250525_225237/weights/weights_final_20250525_225237.npz"
-
Итоговые веса сохраняются в:
Data/Storage/Saves
Там, помимо сохранённых весов, вы можете найти тепловую карту скрытых нейронов, по которым можно определить какой признак был у данного нейрона. А также само исходное изображение В тепловой карте чем краснее пиксели - тем сильнее эти пиксели влияют на активцию этого нейрона, чем они чернее - тем сильнее эти пиксели влияют на то, чтобы нейрон не активировался
Также вы можете посмотреть график обучения (точность за эпоху). Начинаться будет примерно с той же точностью, насколько у вас разделён датасет в "Data/Storage/generate_dataset.py", так как большинство не активируются и будут в классе "НЕ 1"
В папке с сохранёнными данными вы можете найти мета данные об обучение (количество скрытых нейронов, кол-во эпох, какой коэффициент обучения и так далее)
Разработано для учебных целей. Все параметры можно свободно настраивать. Поставьте пожалуйста звезду, если вам помогла данная программа ⭐