Merge pull request 'senkin_alexander_lab_7 is ready' (#138) from senkin_alexander_lab_7 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/138
This commit is contained in:
commit
cab38b4f27
1
senkin_alexander_lab_7/.gitignore
vendored
Normal file
1
senkin_alexander_lab_7/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
./idea
|
40
senkin_alexander_lab_7/README.md
Normal file
40
senkin_alexander_lab_7/README.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
Лабораторная работа №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_2.png)
|
||||||
|
- ![img_3.png](img_3.png)
|
||||||
|
- Потом решил прогнать на 50 эпохах, получились вот такие результаты:
|
||||||
|
- ![img_4.png](img_4.png)
|
||||||
|
- ![img_5.png](img_5.png)
|
||||||
|
- Потом решил прогнать на 100 эпохах, получились вот такие результаты:
|
||||||
|
- ![img.png](img.png)
|
||||||
|
- ![img_1.png](img_1.png)
|
||||||
|
- Видно, что сколько бы итераций мы не выбирали, результаты остаются не утешительными.
|
BIN
senkin_alexander_lab_7/img.png
Normal file
BIN
senkin_alexander_lab_7/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
senkin_alexander_lab_7/img_1.png
Normal file
BIN
senkin_alexander_lab_7/img_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 98 KiB |
BIN
senkin_alexander_lab_7/img_2.png
Normal file
BIN
senkin_alexander_lab_7/img_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
senkin_alexander_lab_7/img_3.png
Normal file
BIN
senkin_alexander_lab_7/img_3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
senkin_alexander_lab_7/img_4.png
Normal file
BIN
senkin_alexander_lab_7/img_4.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
senkin_alexander_lab_7/img_5.png
Normal file
BIN
senkin_alexander_lab_7/img_5.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
61
senkin_alexander_lab_7/senkin_alexander_lab_7.py
Normal file
61
senkin_alexander_lab_7/senkin_alexander_lab_7.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import numpy as np
|
||||||
|
from keras.models import Sequential
|
||||||
|
from keras.layers import Embedding, LSTM, Dense
|
||||||
|
from keras.preprocessing.text import Tokenizer
|
||||||
|
from keras.preprocessing.sequence import pad_sequences
|
||||||
|
|
||||||
|
# Загрузка текста из файла
|
||||||
|
with open('text_rus.txt', 'r', encoding='utf-8') as file:
|
||||||
|
text = file.read()
|
||||||
|
|
||||||
|
# Создание экземпляра Tokenizer
|
||||||
|
tokenizer = Tokenizer(char_level=True)
|
||||||
|
tokenizer.fit_on_texts(text)
|
||||||
|
|
||||||
|
# Преобразование текста в последовательность чисел
|
||||||
|
sequences = tokenizer.texts_to_sequences(text)
|
||||||
|
|
||||||
|
# Подготовка обучающих данных
|
||||||
|
seq_length = 100
|
||||||
|
dataX, dataY = [], []
|
||||||
|
for i in range(0, len(sequences) - seq_length):
|
||||||
|
seq_in = sequences[i:i + seq_length]
|
||||||
|
seq_out = sequences[i + seq_length]
|
||||||
|
dataX.append(seq_in)
|
||||||
|
dataY.append(seq_out)
|
||||||
|
|
||||||
|
dataX = np.array(dataX)
|
||||||
|
dataY = np.array(dataY)
|
||||||
|
|
||||||
|
# Создание модели
|
||||||
|
vocab_size = len(tokenizer.word_index) + 1
|
||||||
|
embedding_dim = 256
|
||||||
|
rnn_units = 1024
|
||||||
|
|
||||||
|
model = Sequential()
|
||||||
|
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=seq_length))
|
||||||
|
model.add(LSTM(units=rnn_units))
|
||||||
|
model.add(Dense(units=vocab_size, activation='softmax'))
|
||||||
|
|
||||||
|
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam')
|
||||||
|
|
||||||
|
# Обучение модели
|
||||||
|
batch_size = 64
|
||||||
|
model.fit(dataX, dataY, epochs=50, batch_size=batch_size)
|
||||||
|
def generate_text(seed_text, gen_length):
|
||||||
|
generated_text = seed_text
|
||||||
|
|
||||||
|
for _ in range(gen_length):
|
||||||
|
sequence = tokenizer.texts_to_sequences([seed_text])[0]
|
||||||
|
sequence = pad_sequences([sequence], maxlen=seq_length)
|
||||||
|
prediction = model.predict(sequence)[0]
|
||||||
|
predicted_index = np.argmax(prediction)
|
||||||
|
predicted_char = tokenizer.index_word[predicted_index]
|
||||||
|
generated_text += predicted_char
|
||||||
|
seed_text += predicted_char
|
||||||
|
seed_text = seed_text[1:]
|
||||||
|
|
||||||
|
return generated_text
|
||||||
|
# Пример использования
|
||||||
|
generated_text = generate_text("Games", 250)
|
||||||
|
print(generated_text)
|
15
senkin_alexander_lab_7/text_eng.txt
Normal file
15
senkin_alexander_lab_7/text_eng.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Games - is an amazing world of entertainment that attracts millions of people around the world. They provide an opportunity to immerse oneself in virtual worlds, experience various adventures, and feel new emotions. Games exist in various forms, from board and card games to video games, computer games, and mobile applications. This text will be dedicated to the extensive topic of games and their impact on our lives.
|
||||||
|
|
||||||
|
Games are a universal language that unites people of different ages, cultures, and nationalities. They allow us to interact with each other, compete, collaborate, and develop communication skills. Board games and sports games create opportunities for social interaction and strengthening social bonds.
|
||||||
|
|
||||||
|
At the same time, video games have become an integral part of modern culture. They allow players to dive into fantastic worlds where they can become heroes and accomplish incredible feats. Video games offer various genres, from adventure games and shooters to role-playing games and simulators, enabling everyone to find a game to their liking.
|
||||||
|
|
||||||
|
One of the key aspects of games is the development of skills and abilities. Many games require strategic thinking, problem-solving, the development of coordination, and reaction. Games can also stimulate creative thinking and imagination. They can be useful in education, helping to learn mathematics, science, and other subjects.
|
||||||
|
|
||||||
|
A significant part of the gaming world is the competitive aspect. Many games allow players to compete with each other, and this can be exciting and motivating. Video game competitions, such as esports events, have become popular and attract millions of viewers.
|
||||||
|
|
||||||
|
Games can also provide positive emotions and enjoyment. They can be a way to relax and distract from everyday worries. Virtual game worlds allow us to experience strong emotions, whether it's the joy of victory, the excitement of competition, or the thrill of adventure.
|
||||||
|
|
||||||
|
However, it's important to remember that games can also pose problems if they are abused. Game addiction can have a negative impact on physical and mental health. Therefore, it's important to find a balance between games and other aspects of life.
|
||||||
|
|
||||||
|
In conclusion, games are a diverse and exciting world that brings joy, develops skills and abilities, encourages competition, and offers various forms of entertainment. However, responsible and balanced gaming is essential to maintain a healthy and fulfilling life.
|
15
senkin_alexander_lab_7/text_rus.txt
Normal file
15
senkin_alexander_lab_7/text_rus.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Игры - это удивительный мир развлечений, который привлекает миллионы людей по всему миру. Они предоставляют возможность погрузиться в виртуальные миры, испытать разнообразные приключения и испытать новые эмоции. Игры существуют в различных формах, от настольных и карточных игр до видеоигр, компьютерных игр и мобильных приложений. Этот текст будет посвящен обширной теме игр и их влиянию на нашу жизнь.
|
||||||
|
|
||||||
|
Игры являются универсальным языком, который объединяет людей разных возрастов, культур и национальностей. Они позволяют нам взаимодействовать друг с другом, соревноваться, сотрудничать и развивать навыки коммуникации. Настольные игры и игры в виде спортивных соревнований создают возможность для общения и укрепления социальных связей.
|
||||||
|
|
||||||
|
Вместе с тем, видеоигры стали неотъемлемой частью современной культуры. Они предоставляют игрокам возможность погрузиться в фантастические миры, где они могут стать героями и совершить невероятные подвиги. Видеоигры предоставляют разнообразные жанры, от приключенческих игр и шутеров до ролевых игр и симуляторов. Это позволяет каждому найти игру по своему вкусу.
|
||||||
|
|
||||||
|
Одним из ключевых аспектов игр является развитие навыков и способностей. Многие игры требуют стратегического мышления, решения задач, развития координации и реакции. Игры могут также стимулировать творческое мышление и фантазию. Они могут быть полезными в образовании, помогая учить математику, науку и другие предметы.
|
||||||
|
|
||||||
|
Важной частью мира игр является соревновательный аспект. Многие игры позволяют игрокам соревноваться между собой, и это может быть захватывающим и мотивирующим. Соревнования по видеоиграм, такие как электронные спортивные мероприятия, стали популярными и привлекают миллионы зрителей.
|
||||||
|
|
||||||
|
Игры также могут предоставлять позитивные эмоции и удовольствие. Они могут быть способом расслабиться и отвлечься от повседневных забот. Виртуальные миры игр позволяют нам испытать сильные эмоции, будь то радость от победы, азарт от соревнований или волнение от приключений.
|
||||||
|
|
||||||
|
Однако следует помнить, что игры также могут вызывать проблемы, если они злоупотребляются. Зависимость от игр может негативно сказаться на физическом и психическом здоровье. Поэтому важно находить баланс между играми и другими аспектами жизни.
|
||||||
|
|
||||||
|
Итак, игры - это разнообразный и захватывающий мир, который приносит радость, развивает навыки и способности, поощряет соревнование и предоставляет различные формы развлечений. Однако ответственное и сбалансированное отношение к играм необходимо для поддержания здоровой и насыщенной жизни.
|
Loading…
Reference in New Issue
Block a user