IIS_2023_1/kutygin_andrey_lab_7/README.md

51 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**Задание**
***
Выбрать художественный текст (четные варианты русскоязычный, нечетные англоязычный) и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как архитектура товарища справляется с вашим текстом.
**Как запустить лабораторную**
***
Запустить файл main.py
**Используемые технологии**
***
Библиотеки tensorflow, numpy, их компоненты
**Описание лабораторной (программы)**
***
Данный код представляет собой пример использования рекуррентной нейронной сети LSTM (Long Short-Term Memory) с использованием библиотеки Keras для обучения модели генерации текста на русском языке.
Описание работы кода:
1. Загрузка и предобработка данных:
- Импортируются необходимые библиотеки, включая TensorFlow, NumPy и Keras.
- Открывается файл с русским текстом "rus.txt" и считывается его содержимое в переменную "rus_text".
- Создается объект "tokenizer_rus" для токенизации текста на отдельные слова.
- Производится обучение токенизатора на предоставленном русском тексте.
- Вычисляется общий размер словаря на основе уникальных слов в тексте.
- Преобразование входных и выходных последовательностей текста в числовой формат, используя токенизатор.
- Выравнивание входных последовательностей до максимальной длины для обеспечения единой размерности.
2. Построение модели:
- Создается объект модели Sequential.
- Добавляется слой Embedding для преобразования числовых представлений слов в векторные представления.
- Добавляется слой LSTM для анализа последовательности входных данных.
- Добавляется полносвязный слой Dense с функцией активации softmax для прогнозирования следующего слова.
- Компилируется модель с выбранным оптимизатором и функцией потерь.
3. Обучение модели:
- Обучение модели на тренировочных данных с выбранными параметрами batch_size и epochs.
4. Функция генерации текста:
- Создается функция generate_text, которая принимает модель, токенизатор, максимальную длину последовательности и начальный текст.
- В цикле генерируются следующие слова на основе текущего состояния модели и добавляются к выходному тексту.
- Функция возвращает сгенерированный текст.
5. Генерация текста на основе обученной модели:
- Вызывается функция generate_text, передавая ей обученную модель, токенизатор, максимальную длину последовательности и начальный текст.
- Выводятся результаты, включая потери модели на тренировочных данных и сгенерированный текст на основе обученной модели.
**Результат**
***
Результат сгенерированного текста на русском языке: Был мальчик по имени тимофей он жил в маленьком домике на краю леса у него была большая мечта стать лучшим рыцарем во всей стране каждый день тимофей тренировался с мечом прыгал через препятствия и никогда не терял надежды он знал что для достижения своей мечты нужно много работать и верить в себя однажды когда тимофей был в лесу он услышал громкий крик он поспешил к месту откуда раздавался крик и увидел что дракон похитил принцессу тимофей решил спасти её и стать настоящим героем он с силой размахнулся мечом и атаковал дракона они долго сражались но тимофей был очень храбрым
Потери на тренировочных данных: 0.026399850845336914
Вывод: текст получился немного сокращенным, так как стоит ограничение в 100 слов, но довольно похожим и несущим примерный смысл той истории, которая находится в файле.