Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР3

.docx
Скачиваний:
7
Добавлен:
03.06.2024
Размер:
1.61 Mб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

старший преподаватель

В.В. Боженко

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №3

СВЁРТОЧНЫЕ НЕЙРОННЫЕ СЕТИ

по курсу: МАШИННОЕ ОБУЧЕНИЕ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

подпись, дата

инициалы, фамилия

Санкт-Петербург 2024

Цель работы: обучить свёрточную нейронную сеть распознавать изображения.

Ход работы

Был установлен keras.utils и импортирваны необходимые библиотеки и методы (Рисунок 1).

Рисунок 1 – Импорт

Загружен набор данных для оценки моделей машинного обучения по проблеме классификации рукописных цифр MNIST (Рисунок 2). Каждое изображение представляет собой квадрат размером 28 на 28 пикселей (всего 784 пикселя). В этом наборе 60 000 изображений используются для обучения модели, и для ее тестирования используется отдельный набор из 10 000 изображений.

Рисунок 2 – Загрузка MNIST

x - изображение, y - соответствующая ему цифра от 0 до 9.

Выведены случайным образом по 4 изображения из тестового и тренировочного наборов и их значения (Рисунок 3, 4)

Рисунок 3 – Код для вывода

Рисунок 4 – Вывод изображений

Набор данных структурирован как трехмерный массив. Чтобы подготовить данные, изображения были представлены в виде одномерных массивов (так как считаем каждый пиксель отдельным входным признаком). В этом случае изображения размером 28 × 28 будут преобразованы в массивы, содержащие 784 элементов (Рисунок 5).

Рисунок 5 – Размеры массивов

Выходная переменная представляет собой целое число от 0 до 9, т.к. это задача классификации с несколькими классами. Значения класса были закодированы в вектор (Рисунок 6).

Рисунок 6 – Кодирование класса

Была создана полносвязная модель с двумя слоями, линейной функцией активации на входе и softmax на выходе (Рисунок 7).

Рисунок 7 – Создание модели

Модель была обучена (Рисунок 8).

Рисунок 8 – Обучение модели

Данные о модели были занесены в датафрейм (Рисунок 9).

Рисунок 9 – Данные о модели

Созданная модель с двумя слоями имеет высокий показатель точности.

Выполнено предсказание, для этого, с помощью argmax возвращены значения y_test из закодированных в изначальные (Рисунок 10).

Рисунок 10 – Предсказание

Выведен отчет о результатах классификации (Рисунок 11).

Рисунок 11 – Отчет о результатах классификации

precision: процент правильно идентифицированных объектов относительно всех объектов, которые были отнесены к данному классу моделью. Значения варьируются от 0.89 до 0.96.

recall: доля правильно идентифицированных объектов данного класса относительно всех объектов этого класса в данных. Значения находятся в пределах от 0.87 до 0.98. F1-score: среднегармоническое между точностью и полнотой. Значения меры F1 варьируются от 0.89 до 0.97. Support: сколько раз класс встречается в исходных данных.

accuracy: процент правильно классифицированных объектов. Значение точности составляет 0.93.

Макроусредненные (macro avg) и взвешенные средние (weighted avg) значения для точности, полноты и F1-меры, которые учитывают баланс между классами, составляют 0.93.

Все метрики показали высокие значения, модель работает хорошо.

Построена матрица ошибок (Рисунок 12).

Рисунок 12 – Матрица ошибок

Диагональные значения близки к 1, что говорит о практически идеальном предсказании класса.

Построены графики зависимости потерь и точности от эпох (Рисунок 13).

Рисунок 13 – Графики зависимости точности и потерь от эпох

По графикам видно равномерное обучение модели, переобучение не наблюдается.

Аналогично создана модель с 2 слоями и функцией активации relu на входном слое (Рисунок 14 - 17).

Рисунок 14 – Создание и обучение модели

Рисунок 15 – Данные о модели

Рисунок 16 – Матрица ошибок

Рисунок 17 – Графики

Матрица ошибок показала еще более высокие диагональные значения, на графиках наблюдается более плавное обучение без "скачков" в отличие от модели с линейной функцией активации на входном слое.

Аналогично созданы и обучены модели с большим количеством слоев и функцией активации relu (Рисунок 18 - 21).

Рисунок 18 – DNN модель с 3 слоями

Рисунок 19 – DNN модель с 4 слоями

Рисунок 20 – DNN модель с 5 слоями

Рисунок 21 – DNN модель с 6 слоями

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

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

Рисунок 22 – Датафрейм

Все модели показали высокое значение точности и низкое значение потерь. С увеличением количества слоев, увеличивается значение точности. Наименьшее значение потерь показала модель 2, в следующих моделях потери возрастают, что может быть связано с переобучением, которое также наблюдается на графиках.

Был произведен импорт методов для работы с свёрточной нейронной сетью (Рисунок 23).

Рисунок 23 – Импорт

Выполнена загрузка и предобработка данных (Рисунок 24).

Рисунок 24 – Загрузка и предобработка данных

Создана модель с 1 сверточным блоком (Рисунок 25).

Рисунок 25 – Создание модели

Выведены данные о модели (Рисунок 26).

Рисунок 26 – Данные о модели

Выполнена компиляция и обучение модели (Рисунок 27).

Рисунок 27 – Компиляция и обучение модели

Информация о модели занесена в датафрейм (Рисунок 28).

Рисунок 28 – Занесение информации в датафрейм

Построены графики зависимости потерь и точности от эпох (Рисунок 29).

Рисунок 29 – Зависимость потерь и точности от эпох

Графики показывают постепенное обучение модели.

Аналогично создана модель с 3 сверточными слоями (Рисунок 30 - 33).

Рисунок 30 – Создание модели с 3 сверточными слоями

Рисунок 31 – Компиляция и обучение модели

Рисунок 32 – Данные о модели

Рисунок 33 – График зависимости потерь и точности от эпох

График имеет резкие скачки и провалы, также заметно расхождение графиков тестовой и тренировочной выборок, что говорит о переобучении.

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

Рисунок 34 – Полный датафрейм

Все DNN модели показали высокое значение точности и низкое значение потерь. С увеличением количества слоев, увеличивается значение точности. Наименьшее значение потерь показала модель 2, в следующих моделях потери возрастают, что может быть связано с переобучением, которое также наблюдается на графиках. CNN модели показали лучший результат чем DNN, увеличение числа свёрточных слоёв также ведёт к повышению точности модели.

Созданы два изображения рукописных цифр 5 и 8, изображения считаны из png файлов и преобразованы в numpy массивы (Рисунок 35).

Рисунок 35 – Импорт и преобразование изображений

Изображения выведены на экран (Рисунок 36).

Рисунок 36 – Вывод изображений

Выполнена предобработка данных (Рисунок 37).

Рисунок 37 – Предобработка

Выполнено предсказание с помощью лучшей по точности и потерям модели (Рисунок 38).

Рисунок 38 – Предсказание

Предсказанный и фактический класс совпали.

Произведена загрузка набора данных fashion_mnist с предметами одежды (Рисунок 39).

Рисунок 39 – Загрузка fashion_mnist

Рисунок 40 – Код для вывода изображений

Рисунок 41 – Изображения fashion_mnist

После изображений предметов одежды выведены классы, к которым они относятся:

0 Футболка/Топ

1 Брюки

2 Пуловер

3 Платье

4 Плащ

5 Сандаль

6 Рубашка

7 Кроссовок

8 Сумка

9 Ботильон

Произведена предобработка данных (Рисунок 42).

Рисунок 42 – Предобработка данных fashion_mnist

Создана модель с 3 сверточными слоями (Рисунок 43).

Рисунок 43 – Создание модели для fashion_mnist

Выведены данные о модели (Рисунок 44).

Рисунок 44 – Данные о модели

Модель скомпилирована и обучена (Рисунок 45).

Рисунок 45 – Компиляция и обучение model_fashion

Выведены метрики модели (Рисунок 46).

Рисунок 46 – Метрики модели

Модель имеет высокую точность и низкое значение потерь.

Выполнено предсказание и составлен отчет о классификации (Рисунок 47).

Рисунок 47 – Предсказание и отчет

Все метрики имеют высокие значения, модель работает хорошо.

Построена матрица ошибок (Рисунок 48).

Рисунок 48 – Матрица ошибок

Большинство диагональных значений близки к 1, значит модель хорошо предсказывает класс. Самое низкое значение у класса 6 (Рубашка), этот класс модель предсказывает хуже всего.

Построены графики зависимости точности и потерь от эпох (Рисунок 49).

Рисунок 49 – Графики зависимости потерь и точности от эпох

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

Ссылка на Google Colab:

Вывод:

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

Были созданы изображения цифр 5 и 8, и распознаны с помощью одной из сверточных моделей, распознанный и фактический классы совпали.

Была создана модель для распознавания предметов одежды, обучение производилось на наборе данных fashion_mnist, использовалась сверточная нейронная сеть. Выполнено предсказание, выведен отчет о классификации, модель показала высокие значения по всем метрикам. Матрица ошибок показала, что хуже всего модель определяет класс 6 - Рубашка. Графики зависимости потерь и точности от эпох показали расхождение, что говорит о переобучении.

Соседние файлы в предмете Машинное обучение