IIS_2023_1/shadaev_anton_lab_7/README.md
2023-11-05 07:03:26 +04:00

7.7 KiB
Raw Blame History

IIS_2023_1

Задание

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

В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.

Вариант 29. Англоязычный текст.

Способ запуска лабораторной работы

Перед запуском скрипта нужно установить библиотеку tensorflow с помощью следующей команды:

pip3 install tensorflow

Чтобы убедиться, что библиотека установлена успешнo, нужно ввести команду:

pip3 show tensorflow

Если библиотека успешно установлена, то получим сообщение вроде этого:

img.png

Чтобы запустить лабораторную работу, нужно выполнить скрипт shadaev_anton_lab_7/main.py.

Стек технологий

  • Python: v. 3.11
  • Tensorflow: v. 2.14.0
  • Pandas - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое
  • Keras - высокоуровневая нейронная сеть, написанная на Python и способная работать поверх TensorFlow, CNTK или Theano. Она была разработана с акцентом на удобство экспериментов и быстрое прототипирование. Предлагает следующие возможности:
    • Создание нейронных сетей;
    • Обучение моделей;
    • Интеграция с Tensorflow
    • И т.д.

Описание кода

  • load_text(file_path): Эта функция открывает текстовый файл по указанному пути и возвращает его содержимое.

  • create_tokenizer_and_sequences(text): Эта функция создает токенизатор на основе входного текста, преобразует текст в последовательности токенов и возвращает токенизатор, общее количество слов, входные последовательности и метки.

  • create_and_train_model(total_words, max_sequence_length, predictors, labels): Эта функция создает и обучает модель последовательностей (sequence model) с использованием входных последовательностей и меток. Модель состоит из слоя Embedding, слоя LSTM и слоя Dense, и она компилируется с функцией потерь sparse_categorical_crossentropy и оптимизатором adam.

  • generate_text(seed_text, next_words, model, max_sequence_length, tokenizer): Эта функция генерирует текст, начиная с заданного начального текста (seed_text) и используя модель и токенизатор.

  • Далее идет использование определенных функций для выполнения задания.

Вывод

Английский текст, сгенерированный на 20 эпохах:

"Event Horizon" horizon horizon a a of of fiction fiction horror horror the the the the the the nature the nature reality reality reality reality reality the the reality the the the the the reality the the reality the reality reality reality reality reality reality reality reality the reality the the nature

img.png

Русский текст, сгенерированный на 20 эпохах:

"Горизонт событий" был был был был был фильме фильме фильме показано спецэффекты создающие создающие создающие наполняют наполняют наполняют наполняют наполняют наполняют сцену страхами страхами страхами собственными собственными собственными собственными страхами собственными страхами страхами страхами страхами страхами как как как зайти зайти зайти зайти в в в в в в фильме показано показано

img.png

Вывод (20 эпох):

  • Английский текст - не осмысленный
  • Русский текст - не осмысленный

Русский текст, сгенерированный на 100 эпохах:

"Горизонт событий" был секретным правительственным способным способным совершать дальние перелёты сверхсветовой сверхсветовой скоростью для этого он он искусственную чёрную дыру и использовал её колоссальную энергию для искривления пространства времени времени образом чтобы начальная и конечная точки путешествия наложились друг на друга друга друга друга друга друга друга друга друга явно явно создавая

img3.png

Английский текст, сгенерированный на 100 эпохах:

"Event Horizon" is a cumbersome mix of science fiction and horror which raises questions for the viewer about the nature of reality the possibilities of scientific progress and its potential dangers the film poses questions about the nature of reality and how far humanity can go in its desire to conquer space

img4.png

Вывод (100 эпох):

  • Английский текст - вполне осмысленный
  • Русский текст - основной смысл текста понять можно

Таким образом, прогон через большее количество эпох способствует увеличению осмысленности текста, но приходится тратить гораздо большее количество ресурсов GPU.