IIS_2023_1/romanova_adelina_lab_7/README.md

53 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2023-12-25 01:19:51 +04:00
# Лабораторная работа №7. Вариант 21
## Тема
Рекуррентная нейронная сеть и задача генерации текста
## Задание
- Выбрать художественный текст и обучить на нем рекуррентную нейронную сеть для решения задачи генерации.
- Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
## Используемые ресурсы
 1.  Художественный текст на английском языке ```wonderland.txt```
 2.  Python-скрипты: ```generate.py```, ```model.py```, ```train.py```.
## Описание работы
### Подготовка данных:
В файле ```train.py``` реализована функция ```get_data```, которая загружает художественный текст, приводит его к нижнему регистру, и создает сопоставление символов числовым значениям.
Текст разбивается на последовательности фиксированной длины ```seq_length```, и каждая последовательность связывается с символом, следующим за ней.
Данные приводятся к тензорам PyTorch и нормализуются для обучения модели.
### Архитектура модели:
В файле ```model.py``` определен класс ```CharModel```, наследуемый от ```nn.Module``` и представляющий собой рекуррентную нейронную сеть.
Архитектура модели включает в себя один слой LSTM с размером скрытого состояния 256, слой dropout для регуляризации и линейный слой для вывода результатов.
### Обучение модели:
В файле ```train.py``` реализован скрипт для обучения модели. Выбрана оптимизация Adam, функция потерь - ```CrossEntropyLoss```.
Обучение происходит на GPU, если он доступен. Обучение проводится в течение нескольких эпох, с валидацией на каждой эпохе. Сохраняется лучшая модель.
Процесс обучения модели:
![](train_process.png "")
### Генерация текста:
В файле ```generate.py``` модель загружается из сохраненного состояния. Генерируется случайный промпт из исходного текста, и модель используется для предсказания следующего символа в цикле.
## Вывод:
![](generated_text.png "")
В сгенерированном тексте можно найти осмысленные участки, поэтому можно сделать вывод, что модель действительно хорошо обучилась.