IIS_2023_1/gusev_vladislav_lab_7
2023-11-02 16:38:27 +04:00
..
gusev_vladislav_lab_7.py gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
img_1.png gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
img_2.png gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
img_3.png gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
img_4.png gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
img.png gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
README.md gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
text_eng.txt gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00
text_ru.txt gusev_vladislav_lab_7 is ready 2023-11-02 16:38:27 +04:00

Вариант 9

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

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

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

Выполняем файл gusev_vladislav_lab_7.py, решение будет в консоли.

Технологии

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

По коду

  1. Читаем файл с текстом
  2. Создаем объект tokenizer для превращение текста в числа для нейронной сети.
  3. Создаем модель нейронной сети с следующими аргументами:
  • Embedding - это слой, который обычно используется для векторного представления категориальных данных, таких как слова или символы. Он позволяет нейронной сети изучать эмбеддинги, то есть отображение слов (или символов) в вектора низкой размерности. Это позволяет сети понимать семантические отношения между словами.
  • LSTM - это слой, представляющий собой рекуррентный нейрон, который способен учитывать зависимости в последовательных данных. Он хорошо подходит для обработки последовательных данных, таких как текст.
  • Dense - это полносвязный слой, который принимает входные данные и применяет весовые коэффициенты к ним. Этот слой часто используется в конце нейронных сетей для решения задачи классификации или регрессии.
  1. Обучаем модель на 100 эпохах (итерациях по данным) и генерируем текст.

img.png Английский 100 эпох img_1.png

img_3.png Русский 100 эпох img_2.png Русский 17 эпох img_4.png

По консоли

  • Английский текст генерировался на 100 эпохах, начало получилось осмысленным, но чем ближе к концу тем хуже.
  • Русский текст также генерировался на 100 эпохах, с многочисленными ошибками в словах. Русский текст,сгенерированный на 17 эпохах по ошибкам в словах оказался лучше, но всё равно не идеально.