istyukov_timofey_lab_7 is ready #303
93
istyukov_timofey_lab_7/README.md
Normal file
93
istyukov_timofey_lab_7/README.md
Normal file
@ -0,0 +1,93 @@
|
||||
# Лабораторная работа №7. Рекуррентная нейронная сеть и задача генерации текста
|
||||
## 12 вариант
|
||||
___
|
||||
|
||||
### Задание:
|
||||
Выбрать художественный текст на языке по варианту и обучить на нём рекуррентную
|
||||
нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры
|
||||
так, чтобы приблизиться к максимально осмысленному результату. Далее разбиться
|
||||
на пары чётный-нечётный вариант, обменяться разработанными сетями и проверить,
|
||||
как архитектура товарища справляется с вашим текстом. В завершении подобрать
|
||||
компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
||||
|
||||
### Вариант:
|
||||
- Язык текста: **русский**
|
||||
|
||||
### Художественный текст:
|
||||
- Отрывок из книги Ф.М. Достоевского — "Белые ночи" (в формате .txt)
|
||||
|
||||
___
|
||||
|
||||
### Запуск
|
||||
- Запустить файл lab7.py
|
||||
|
||||
### Используемые технологии
|
||||
- Язык программирования **Python**
|
||||
- Среда разработки **PyCharm**
|
||||
- Библиотеки:
|
||||
* numpy
|
||||
* keras
|
||||
* os
|
||||
|
||||
### Описание программы
|
||||
|
||||
Здесь представлена модель глубокого обучения для генерации текста с помощью
|
||||
библиотеки Keras и алгоритма LSTM. Чтобы построить модель генерации
|
||||
художественного текста, требуются некоторые текстовые данные. В качестве набора
|
||||
данных здесь используется отрывок из книги великого русского писателя-реалиста
|
||||
в формате текстового файла.
|
||||
|
||||
**Шаги написания программы:**
|
||||
1. **Предварительная обработка данных**
|
||||
1. Перевод символов в нижний регистр
|
||||
2. Формирование уникального набора использующихся в тексте символов
|
||||
3. Преобразование текстовых данных в числовые значения
|
||||
4. Создание последовательности символов (X - значений, Y - следующий символ)
|
||||
5. Преобразование данных в массив логических значений
|
||||
2. **Построение базовой модели**
|
||||
1. Инициализация модели **Sequential**. это простой стек слоев,
|
||||
с помощью которого нельзя представить произвольную модель.
|
||||
2. Три слоя **LSTM** (по 200 единиц в каждом):
|
||||
- В первом слое входная форма.
|
||||
- Во втором слое параметр *return_sequences=True* для обработки тех же
|
||||
последовательностей
|
||||
- В третьем слое ничего лишнего
|
||||
2. Три слоя **Dropout** с вероятностью 20% для проверки переобучения.
|
||||
Dropout предполагает случайный кик нейронов из процесса обучения.
|
||||
Он обеспечивает, чтобы нейронная сеть не стала слишком зависимой от
|
||||
любого одного узла.
|
||||
3. Один "плотный" слой **Dense** в конце, который даёт вывод символов.
|
||||
Dense обрабатывает каждый элемент предыдущего слоя, выполняя матричное
|
||||
перемножение этих элементов со своими весами.
|
||||
4. Конфигурация модели для категориальной классификации.
|
||||
3. **Обучение модели**
|
||||
1. **epochs=50** (одна эпоха = один проход вперёд и один проход назад
|
||||
всех обучающих примеров)
|
||||
2. **batch_size=100** (количество обучающих примеров за один проход
|
||||
вперёд/назад. Чем больше размер пакета, тем больше памяти лучше использовать.
|
||||
4. **Сохранение модели** (во избежание повторного обучения и ради экономии времени)
|
||||
5. **Генерация текста на основе сохранённой модели**
|
||||
1. Загрузка модели
|
||||
2. Выбор случайной стартовой точки в исходном тексте
|
||||
3. Генерация назначенного количества символов
|
||||
---
|
||||
### Пример работы
|
||||
|
||||
*В ходе прогона программы было зафиксировано несколько результатов генерации
|
||||
200 символов. Примеры приведены ниже.*
|
||||
|
||||
![Graphics](result_1.jpg)
|
||||
|
||||
![Graphics](result_2.jpg)
|
||||
|
||||
![Graphics](result_3.jpg)
|
||||
|
||||
![Graphics](result_4.jpg)
|
||||
|
||||
---
|
||||
|
||||
### Вывод
|
||||
Итак, рекуррентная нейронная сеть справилась с задачей генерации текста.
|
||||
Если говорить о качестве, то требуется более глубокое обучение и больше текста.
|
||||
И тогда нейросеть сможет писать даже в стиле Достоевского. Но по времени это
|
||||
слишком затратно. Однако в рамках лабораторной работы результат вышел приемлемый.
|
BIN
istyukov_timofey_lab_7/result_1.jpg
Normal file
BIN
istyukov_timofey_lab_7/result_1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
istyukov_timofey_lab_7/result_2.jpg
Normal file
BIN
istyukov_timofey_lab_7/result_2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
istyukov_timofey_lab_7/result_3.jpg
Normal file
BIN
istyukov_timofey_lab_7/result_3.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
istyukov_timofey_lab_7/result_4.jpg
Normal file
BIN
istyukov_timofey_lab_7/result_4.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in New Issue
Block a user