From a03211b59b65c702421145ea52459abe17aff10c Mon Sep 17 00:00:00 2001 From: MachulinaDV Date: Sun, 30 Nov 2025 15:56:37 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20'lab?= =?UTF-8?q?works/LW4'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labworks/LW4/1.png | Bin 0 -> 21150 bytes labworks/LW4/Report.md | 377 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 377 insertions(+) create mode 100644 labworks/LW4/1.png create mode 100644 labworks/LW4/Report.md diff --git a/labworks/LW4/1.png b/labworks/LW4/1.png new file mode 100644 index 0000000000000000000000000000000000000000..21c81926fd8383d69ba3bfc8eded096435ed817e GIT binary patch literal 21150 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 literal 0 HcmV?d00001 diff --git a/labworks/LW4/Report.md b/labworks/LW4/Report.md new file mode 100644 index 0000000..1dfb61b --- /dev/null +++ b/labworks/LW4/Report.md @@ -0,0 +1,377 @@ +# Отчёт по лабораторной работе №3 +## по теме: "Распознавание изображений" + +--- + +### Выполнили: Бригада 2, Мачулина Д.В., Бирюкова А.С., А-02-22 + +--- +### 1. Создание блокнота и настройка среды. Настройка блокнота для работы с аппаратным ускорителем GPU +```python +from google.colab import drive +drive.mount('/content/drive') +import os +os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab4') + +from tensorflow import keras +from tensorflow.keras import layers +from tensorflow.keras.models import Sequential +import matplotlib.pyplot as plt +import numpy as np +from sklearn.metrics import classification_report, confusion_matrix +from sklearn.metrics import ConfusionMatrixDisplay +``` +```python +import tensorflow as tf +device_name = tf.test.gpu_device_name() +if device_name != '/device:GPU:0': + raise SystemError('GPU device not found') +print('Found GPU at: {}'.format(device_name)) +``` +--- +### 2. Загрузка данных IMBd. Настройка набора данных (4*2 - 1) +```python +# загрузка датасета +from keras.datasets import imdb +vocabulary_size = 5000 +index_from = 3 +(X_train, y_train), (X_test, y_test) = imdb.load_data(path="imdb.npz", + num_words=vocabulary_size, + skip_top=0, + maxlen=None, + seed=7, + start_char=1, + oov_char=2, + index_from=index_from + ) +print('Shape of X train:', X_train.shape) +print('Shape of y train:', y_train.shape) +print('Shape of X test:', X_test.shape) +print('Shape of y test:', y_test.shape) +``` +Shape of X train: (25000,)
+Shape of y train: (25000,)
+Shape of X test: (25000,)
+Shape of y test: (25000,)
+ +--- +### 3. Вывод отзыва из обучающего множества в виде списка индекса слов. Преобразование списка индексов в текст и вывод отзыва в виде текста. Вывод длины отзыва, метки класса и названия. +```python +# создание словаря для перевода индексов в слова +# заргузка словаря "слово:индекс" +word_to_id = imdb.get_word_index() +# уточнение словаря +word_to_id = {key:(value + index_from) for key,value in word_to_id.items()} +word_to_id[""] = 0 +word_to_id[""] = 1 +word_to_id[""] = 2 +word_to_id[""] = 3 +# создание обратного словаря "индекс:слово" +id_to_word = {value:key for key,value in word_to_id.items()} +``` +```python +#Вывод отзыва из обучающего множества в виде списка индексов слов +some_number = 192 +review_indices = X_train[some_number] +print("Список индексов слов:") +print(review_indices) + +#Преобразование списка индексов в текст +review_as_text = ' '.join(id_to_word[id] for id in X_train[some_number]) +print("\nОтзыв в виде текста:") +print(review_as_text) +``` +Список индексов слов: +[1, 225, 164, 433, 74, 2753, 35, 2188, 20, 5, 397, 35, 298, 20, 585, 305, 10, 10, 45, 64, 61, 652, 21, 6, 52, 708, 9, 2, 725, 4, 2, 7, 1451, 1089, 105, 17, 230, 17, 2, 9, 1947, 4, 3238, 11, 135, 422, 26, 6, 2, 1021, 378, 1780, 224, 472, 36, 26, 379, 724, 2607, 387, 178, 1582, 4, 771, 36, 2, 112, 2, 34, 6, 2, 10, 10, 300, 103, 6, 2, 2, 8, 516, 25, 30, 252, 8, 376, 90, 51, 1455, 335, 4010, 33, 54, 25, 2440, 90, 125, 10, 10, 241, 1559, 4, 609, 46, 7, 4, 2, 11, 3826, 2, 5, 11, 1011, 7, 4193, 7, 4684, 2, 3498, 90, 8, 3534, 2, 7, 4779, 10, 10, 342, 92, 1414, 979, 4, 568, 44, 4, 2, 5, 331, 2237, 18, 57, 684, 52, 282, 15, 4, 1788, 71, 2, 34, 90, 10, 10, 470, 137, 269, 8, 1090, 387, 129, 761, 46, 7, 129, 1682, 17, 76, 17, 614, 8, 2, 15, 4, 2, 2, 41, 10, 10, 457, 103, 397, 339, 39, 294, 8, 169, 4, 2, 103, 2, 129, 322, 30, 252, 8, 2222, 98, 245, 17, 515, 17, 614, 38, 25, 70, 393, 90, 31, 23, 31, 57, 213, 11, 112, 2, 208, 10, 10, 150, 474, 115, 535, 15, 101, 415, 62, 30, 2, 8, 231, 6, 171, 2497, 467, 134, 2, 2, 21, 4, 105, 11, 135, 422, 26, 38, 2, 5, 97, 38, 111, 1297, 2497, 15, 45, 2620, 1167, 18, 4, 529, 8, 459, 44, 68, 4369, 237, 36, 26, 1484, 7, 68, 205, 399, 14, 1098, 4, 2, 7, 4, 436, 22, 10, 10, 11, 420, 25, 71, 1535, 4, 2, 161, 570, 19, 2, 2, 105, 237, 36, 533, 26, 1348, 2, 2, 18, 487, 14, 2, 36, 872, 8, 97, 1186, 38, 2, 2270, 15, 32, 281, 7, 635, 271, 46, 4, 2054, 10, 10, 300, 4, 2, 1098, 6, 1002, 1004, 6, 568, 1709, 475, 137, 4, 2311, 9, 2359, 57, 53, 74, 747, 2194, 245, 10, 10, 241, 4, 2, 2, 11, 32, 2580, 7, 2, 4983, 11, 3826, 2, 5, 187, 3400, 7, 84, 246, 57, 31, 85, 74, 4, 1021, 378, 186, 8, 1495, 27, 1032, 2003, 10, 10, 342, 4, 2, 2, 35, 1755, 1166, 7, 567, 15, 62, 28, 556, 101, 406, 112, 10, 10, 470, 4, 836, 139, 69, 57, 1546, 1689, 11, 192, 49, 139, 71, 1504, 1677, 2, 39, 298, 102, 10, 10, 4, 64, 1123, 9, 4, 2, 751, 4, 130, 63, 16, 6, 184, 1770, 136, 237, 12, 16, 2, 725, 4, 322, 45, 99, 78, 4, 1057, 1477, 12, 56, 19, 35, 2, 379, 277, 15, 266, 46, 7, 317, 1845, 10, 10, 371, 4, 2, 496, 4, 231, 7, 135, 422, 144, 30, 3013, 7, 533, 128, 246, 36, 144, 43, 847, 8, 2642, 5, 193, 2, 19, 84, 37, 97, 102, 19, 6, 729, 2, 18, 489, 5, 1663] + +Отзыв в виде текста: + there's nothing worse than renting an asian movie and getting an american movie experience instead br br it's only my opinion but a good thriller is upon the of likable intelligent characters as far as is concerned the protagonists in say yes are a married couple nicely done unfortunately they are stupid beyond belief let us count the ways they being by a br br 1 after a to kill you be sure to tell him what hotel you're staying at when you drop him off br br 2 beat the hell out of the in broad and in front of dozens of witnesses allowing him to press of assault br br 3 don't bother telling the police about the and simply assume for no apparently good reason that the cops were by him br br 4 while trying to escape let your lady out of your sight as much as possible to that the her br br 5 after getting help from someone to find the after your wife be sure to send them away as soon as possible so you can face him one on one no point in being right br br now i'd never expect that any person would be to making a few mistakes under these but the characters in say yes are so and make so many unbelievable mistakes that it's effectively impossible for the viewer to care about their safety since they are victims of their own doing this kills the of the entire film br br in case you were wondering the didn't stop with characters since they themselves are surely for writing this they decided to make situations so unrealistic that all sense of reality goes out the window br br 1 the kills a cop inside a police station – while the protagonist is asleep no more than ten feet away br br 2 the in all sorts of activities in broad and around tons of people yet no one other than the married couple seems to notice his odd behavior br br 3 the an absurd amount of violence that would have killed any human being br br 4 the suspense scenes had no imagination whatsoever in fact some scenes were direct rip from american movies br br the only positive is the near the end which was a pretty brutal scene since it was upon the wife it's too bad the filmmakers followed it up with an stupid ending that comes out of left field br br truly the behind the making of say yes should be ashamed of themselves better yet they should just move to california and take with people who make movies with a similar for quality and intelligence + +```python +#Вывод метки и названия класса +class_label = y_train[some_number] +class_name = "Positive" if class_label == 1 else "Negative" +print(f"\nМетка класса: {class_label} - {class_name}") +``` +Метка класса: 0 - Negative + +--- +### 4. Вывод максимальной и минимальной длины отзыва в обучающем множестве +```python +#Вывод длины отзыва +max_review_length = len(max(X_train, key=len)) +print(f"\nМаксимальная длина отзыва: {max_review_length}") +min_review_length = len(min(X_train, key=len)) +print(f"\nМинимальная длина отзыва: {min_review_length}") +review_length = len(review_indices) +print(f"\nДлина отзыва: {review_length}") +``` +Максимальная длина отзыва: 2494
+Минимальная длина отзыва: 11
+Длина отзыва: 502 + +--- +### 5. Предобработка данных +```python +# предобработка данных +from tensorflow.keras.utils import pad_sequences +max_words = 500 +X_train = pad_sequences(X_train, maxlen=max_words, value=0, padding='pre', truncating='post') +X_test = pad_sequences(X_test, maxlen=max_words, value=0, padding='pre', truncating='post') +``` +--- +### 6. Повтор пунктов 4-3. Вывод о том, как преобразовался отзыв после предобработки +```python +#Вывод длины отзыва +max_review_length = len(max(X_train, key=len)) +print(f"\nМаксимальная длина отзыва: {max_review_length}") +min_review_length = len(min(X_train, key=len)) +print(f"\nМинимальная длина отзыва: {min_review_length}") +review_length = len(review_indices) +print(f"\nДлина отзыва: {review_length}") +``` +Максимальная длина отзыва: 500
+Минимальная длина отзыва: 500
+Длина отзыва: 502 + +```python +#Вывод отзыва из обучающего множества в виде списка индексов слов +some_number = 132 +review_indices = X_train[some_number] +print("Список индексов слов:") +print(review_indices) + +#Преобразование списка индексов в текст +review_as_text = ' '.join(id_to_word[id] for id in X_train[some_number]) +print("\nОтзыв в виде текста:") +print(review_as_text) +``` +Список индексов слов: +[ 1 225 164 433 74 2753 35 2188 20 5 397 35 298 20 + 585 305 10 10 45 64 61 652 21 6 52 708 9 2 + 725 4 2 7 1451 1089 105 17 230 17 2 9 1947 4 + 3238 11 135 422 26 6 2 1021 378 1780 224 472 36 26 + 379 724 2607 387 178 1582 4 771 36 2 112 2 34 6 + 2 10 10 300 103 6 2 2 8 516 25 30 252 8 + 376 90 51 1455 335 4010 33 54 25 2440 90 125 10 10 + 241 1559 4 609 46 7 4 2 11 3826 2 5 11 1011 + 7 4193 7 4684 2 3498 90 8 3534 2 7 4779 10 10 + 342 92 1414 979 4 568 44 4 2 5 331 2237 18 57 + 684 52 282 15 4 1788 71 2 34 90 10 10 470 137 + 269 8 1090 387 129 761 46 7 129 1682 17 76 17 614 + 8 2 15 4 2 2 41 10 10 457 103 397 339 39 + 294 8 169 4 2 103 2 129 322 30 252 8 2222 98 + 245 17 515 17 614 38 25 70 393 90 31 23 31 57 + 213 11 112 2 208 10 10 150 474 115 535 15 101 415 + 62 30 2 8 231 6 171 2497 467 134 2 2 21 4 + 105 11 135 422 26 38 2 5 97 38 111 1297 2497 15 + 45 2620 1167 18 4 529 8 459 44 68 4369 237 36 26 + 1484 7 68 205 399 14 1098 4 2 7 4 436 22 10 + 10 11 420 25 71 1535 4 2 161 570 19 2 2 105 + 237 36 533 26 1348 2 2 18 487 14 2 36 872 8 + 97 1186 38 2 2270 15 32 281 7 635 271 46 4 2054 + 10 10 300 4 2 1098 6 1002 1004 6 568 1709 475 137 + 4 2311 9 2359 57 53 74 747 2194 245 10 10 241 4 + 2 2 11 32 2580 7 2 4983 11 3826 2 5 187 3400 + 7 84 246 57 31 85 74 4 1021 378 186 8 1495 27 + 1032 2003 10 10 342 4 2 2 35 1755 1166 7 567 15 + 62 28 556 101 406 112 10 10 470 4 836 139 69 57 + 1546 1689 11 192 49 139 71 1504 1677 2 39 298 102 10 + 10 4 64 1123 9 4 2 751 4 130 63 16 6 184 + 1770 136 237 12 16 2 725 4 322 45 99 78 4 1057 + 1477 12 56 19 35 2 379 277 15 266 46 7 317 1845 + 10 10 371 4 2 496 4 231 7 135 422 144 30 3013 + 7 533 128 246 36 144 43 847 8 2642 5 193 2 19 + 84 37 97 102 19 6 729 2 18 489] + +Отзыв в виде текста: + there's nothing worse than renting an asian movie and getting an american movie experience instead br br it's only my opinion but a good thriller is upon the of likable intelligent characters as far as is concerned the protagonists in say yes are a married couple nicely done unfortunately they are stupid beyond belief let us count the ways they being by a br br 1 after a to kill you be sure to tell him what hotel you're staying at when you drop him off br br 2 beat the hell out of the in broad and in front of dozens of witnesses allowing him to press of assault br br 3 don't bother telling the police about the and simply assume for no apparently good reason that the cops were by him br br 4 while trying to escape let your lady out of your sight as much as possible to that the her br br 5 after getting help from someone to find the after your wife be sure to send them away as soon as possible so you can face him one on one no point in being right br br now i'd never expect that any person would be to making a few mistakes under these but the characters in say yes are so and make so many unbelievable mistakes that it's effectively impossible for the viewer to care about their safety since they are victims of their own doing this kills the of the entire film br br in case you were wondering the didn't stop with characters since they themselves are surely for writing this they decided to make situations so unrealistic that all sense of reality goes out the window br br 1 the kills a cop inside a police station – while the protagonist is asleep no more than ten feet away br br 2 the in all sorts of activities in broad and around tons of people yet no one other than the married couple seems to notice his odd behavior br br 3 the an absurd amount of violence that would have killed any human being br br 4 the suspense scenes had no imagination whatsoever in fact some scenes were direct rip from american movies br br the only positive is the near the end which was a pretty brutal scene since it was upon the wife it's too bad the filmmakers followed it up with an stupid ending that comes out of left field br br truly the behind the making of say yes should be ashamed of themselves better yet they should just move to california and take with people who make movies with a similar for quality + + +Отбросили два последних слова, чтобы длина отзыва стала равна заданному значению (500) + +--- +### 7. Вывод предобработанных массивов обучающих и тестовых данных и их размерностей +```python +# вывод данных +print('X train: \n',X_train) +print('X train: \n',X_test) + +# вывод размерностей +print('Shape of X train:', X_train.shape) +print('Shape of X test:', X_test.shape) +``` +X train:
+ [[ 0 0 0 ... 104 545 7]
+ [ 0 0 0 ... 2 262 372]
+ [ 0 0 0 ... 758 10 10]
+ ...
+ [ 0 0 0 ... 2 27 375]
+ [ 0 0 0 ... 11 111 531]
+ [ 0 0 0 ... 152 1833 12]]

+X train:
+ [[ 0 0 0 ... 2 126 3849]
+ [ 0 0 0 ... 25 1833 12]
+ [ 0 0 0 ... 129 249 4262]
+ ...
+ [ 0 0 0 ... 2 24 1178]
+ [ 0 0 0 ... 61 278 145]
+ [ 0 0 0 ... 12 5 358]]
+ +Shape of X train: (25000, 500)
+Shape of X test: (25000, 500) + +--- +### 8. Реализация модели рекуррентной нейронной сети, состоящей из слоев Embedding, LSTM, Dropout, Dense и её обучение. Вывод информации об архитектуре нейронной сети. +```python +model = Sequential() +model.add(layers.Embedding(input_dim=vocabulary_size, output_dim=32, input_length=max_words, input_shape=(max_words,))) +model.add(layers.LSTM(76)) +model.add(layers.Dropout(0.3)) +model.add(layers.Dense(1, activation='sigmoid')) + +model.summary() +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Layer (type)Output ShapeParam #
embedding_1 (Embedding)(None, 500, 32)160,000
lstm_1 (LSTM)(None, 76) 33,136
dropout_1 (Dropout)(None, 76) 0
dense_1 (Dense)(None, 1)77
+ +Total params: 193,213 (754.74 KB)
+Trainable params: 193,213 (754.74 KB)
+Non-trainable params: 0 (0.00 B) +```python +batch_size = 64 +epochs = 5 +model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"]) +model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.2) +``` +```python +test_loss, test_acc = model.evaluate(X_test, y_test) +print(f"\nTest accuracy: {test_acc}") +``` +Test accuracy: 0.8670799732208252 + +--- +### 9. Оценить качество обучения на тестовых данных. +```python +y_score = model.predict(X_test) +y_pred = [1 if y_score[i,0]>=0.5 else 0 for i in range(len(y_score))] +from sklearn.metrics import classification_report +print(classification_report(y_test, y_pred, labels = [0, 1], target_names=['Negative', 'Positive'])) +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
precisionrecallf1-scoresupport
Negative0.860.880.8712500
Positive0.880.860.8712500
accuracy 0.8725000
macro avg0.870.870.8725000
weighted avg0.870.870.8725000
+ +```python +from sklearn.metrics import roc_curve, auc +import matplotlib.pyplot as plt +fpr, tpr, thresholds = roc_curve(y_test, y_score) +plt.plot(fpr, tpr) +plt.grid() +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC') +plt.show() +print('Area under ROC is', auc(fpr, tpr)) +``` + +Area under ROC is 0.936850272 + +**Вывод** + + + + + + + + + + + + + + + + + +
МодельКоличество настраиваемых параметровКоличество эпох обученияКачество классификации тестовой выборки
Рекуррентная
193,213
3
accuracy: 0.867
loss: 0.331
ROC: 0.936
+ +В ходе лабораторной работы было изучено применение рекуррентной нейронной сети. Исходя из анализа полученных результатов, представленных в таблице, делаем вывод, что модель хорошо справилась с задачей определения тональности текста: accuracy = 0.867, loss = 0.331. Показатель точности превышает требуемый порог в 0,8. Значение ROC превышает 0,9, что свидетельствует о способности модели хорошо различать два класса - отрицательные и положительные отзывы \ No newline at end of file