Файл: Лабораторная работа 9 По дисциплине Теория информации, данные, знания.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 221
Скачиваний: 11
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ.ПРОФ М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
-
Исследовать нейронную сеть при заданных начальных параметрах (таблица 1). -
Исследовать зависимость точности распознавания от количества нейронов в скрытом слое, количества слоев, метода активации. -
Замерьте время вычисления 100 эпох на CPU и на GPU. Какое ускорение вы наблюдаете? -
Постройте на одном графике loss для train и test. Имеется ли переобучение сети?
| | Метод оптимизации | Число нейронов в скрытом слое n_hidden_neurons | Шаг градиентного спуска lr |
| 4 | ADAM | 5 | 0.01 |
Выполнение работы: Выполнение лабораторной работы будет производиться в среде Google Colaboratory: https://colab.research.google.com/notebooks/welcome.ipynb.Задание 1.Зафиксируем последовательность случайных чисел с помощью команды random seed. Также фиксируем генераторы модуля numpy и seed. Включаем детерминистичный режим для библиотеки cudnn.Выставив все эти параметры (рис. 1), мы можем гарантировать то, что у нас эксперименты будут воспроизводимы.Рисунок 1. Код программы для воспроизводимости эксперимента.Кроме того, нам понадобится датасет. Самый простой датасет для классификации изображений – это датасет MNIST, он содержит в себе рукописные цифры от 0 до 9, и его можно скачать с помощью библиотеки torchvision.datasets, мы скачаем и train, и test, и получим соответственно mnist_train, mnist_test.Рисунок 2. Импорт датасета.Преобразуем X_train и X_test в дробные числа.Рисунок 3. Преобразование значения в дробные числа.Преобразуем 3х-мерный тензор X_train и X_test в двумерный тензор для передачи в полносвязную нейронную сеть.Рисунок 4. Преобразование в двумерный тензор.Создадим нейронную сеть. Назовём эту сеть MNISTnet. Внутри будет 100 скрытых нейронов. Рисунок 5. Создание нейронной сети.Добавим функцию loss. И применим батчи.Рисунок 6. Функция loss и батчи.Далее переключим среду обучения на GPU. Затем переложим вычисления на GPU. Для этого напишем код (рис. 7).Рисунок 7. Код для вычисления на GPU.Ниже представлен скриншот выполнения кода.Рисунок 8. Результат обучения нейросети.Задание 2Вводные данные по умолчанию: количество эпох 50, lr = 0.01, n_hidden_neurons = 100, слоёв 2, метод активации Sigmoid.
Исследуем зависимость точности распознавания от количества нейронов в скрытом слое:
-
n_hidden_neurons = 100
-
n_hidden_neurons = 50
-
n_hidden_neurons = 20
-
количество слоёв 2
-
количество слоёв 3
-
количество слоёв 4
-
Sigmoid
-
Tahn
Рисунок 19. Функция для вывода графика.В результате мы получим следующий график.Рисунок 20. Графики loss для train и test.Из графика видно, что отсутствует переобучение сети, т.к. качество обучения для train растёт хуже.Переобучение сети – качество на train растёт гораздо лучше, чем на test, сеть начинает запоминать картинки, вместо обучения новым вещам.Вывод В данной лабораторной работе мы научились классифицировать изображения рукописных цифр с помощью нейронной сети. С помощью GPU обучение происходит в несколько раз быстрее, чем на CPU. Узнали, что такое переобучение сети. При изменении входных данных изменяется точность распознавания и время обучения.