IIS_2023_1/senkin_alexander_lab_7/README.md

4.2 KiB
Raw Blame History

Лабораторная работа №7

Вариант №4

Задание на лабораторную:

Выбрать художественный текст (четные варианты русскоязычный, нечетные англоязычный) и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату. Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как архитектура товарища справляется с вашим текстом. В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.

Как запустить лабораторную работу:

Чтобы увидеть работу программы, нужно запустить исполняемый питон файл senkin_alexander_lab_7.py,

Библиотеки:

  • NumPy - библиотека для работы с многомерными массивами.
  • Keras - это библиотека для Python, позволяющая легко и быстро создавать нейронные сети.

Описание программы:

  • Читаем файл с текстом.
  • Каждая строка текста переводится в числа с помощью Tokernizer.
  • Строим RNN модель используя Keras: Embedding - представления слов, фраз или текстовых данных в виде числовых векторов в многомерном пространстве. Вложения используются для преобразования текстовой информации в форму, понятную компьютерам, что позволяет моделям машинного обучения анализировать и работать с текстом. LSTM (Long Short-Term Memory) - это тип рекуррентной нейронной сети (RNN), который разработан для обработки и моделирования последовательных данных. LSTM является разновидностью рекуррентных нейронных сетей и был специально создан для решения проблемы исчезающего и взрывающегося градиента, с которыми сталкиваются традиционные RNN. Dense - один из типов слоев, используемых в искусственных нейронных сетях, в том числе в глубоком обучении, применяется для выполнения операции линейной комбинации входных данных и весов, а затем применения нелинейной функции активации к полученному результату.
  • Обучаем модель на 100 эпохах.
  • Генерируем последовательность на основе текста.
  • Я прогнал текст сначала на 20 эпохах русский и английский, получились не очень результаты:
  • img_2.png
  • img_3.png
  • Потом решил прогнать на 50 эпохах, получились вот такие результаты:
  • img_4.png
  • img_5.png
  • Потом решил прогнать на 100 эпохах, получились вот такие результаты:
  • img.png
  • img_1.png
  • Видно, что сколько бы итераций мы не выбирали, результаты остаются не утешительными.