форкнуто от main/is_dnn
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
1 строка
57 KiB
Plaintext
1 строка
57 KiB
Plaintext
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"gpuType":"T4","mount_file_id":"1dQiaK4Y4D4eYkkKYx5IBKLvpkudanxQO","authorship_tag":"ABX9TyORSDet3l9scspyGr9Z+1WD"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"accelerator":"GPU"},"cells":[{"cell_type":"code","execution_count":2,"metadata":{"id":"rASa9J7lykKr","executionInfo":{"status":"ok","timestamp":1765983141737,"user_tz":-180,"elapsed":41,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}}},"outputs":[],"source":["import os\n","os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab4')"]},{"cell_type":"code","source":["from tensorflow import keras\n","from tensorflow.keras import layers\n","from tensorflow.keras.models import Sequential\n","import matplotlib.pyplot as plt\n","import numpy as np\n","\n","import tensorflow as tf\n","device_name = tf.test.gpu_device_name()\n","if device_name != '/device:GPU:0':\n"," raise SystemError('GPU device not found')\n","print('Found GPU at: {}'.format(device_name))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ivnaOo__zEWA","executionInfo":{"status":"ok","timestamp":1765983184600,"user_tz":-180,"elapsed":9392,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"382aaeea-c183-4225-bd05-15447035225a"},"execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["Found GPU at: /device:GPU:0\n"]}]},{"cell_type":"code","source":["from keras.datasets import imdb\n","\n","vocabulary_size = 5000\n","index_from = 3\n","\n","(X_train, y_train), (X_test, y_test) = imdb.load_data(\n"," path=\"imdb.npz\",\n"," num_words=vocabulary_size,\n"," skip_top=0,\n"," maxlen=None,\n"," seed=23,\n"," start_char=1,\n"," oov_char=2,\n"," index_from=index_from\n"," )\n","\n","print('Shape of X train:', X_train.shape)\n","print('Shape of y train:', y_train.shape)\n","print('Shape of X test:', X_test.shape)\n","print('Shape of y test:', y_test.shape)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vEvCcnAazRYl","executionInfo":{"status":"ok","timestamp":1765983273528,"user_tz":-180,"elapsed":6591,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"c030c415-4ee5-418f-958d-5105ea420484"},"execution_count":4,"outputs":[{"output_type":"stream","name":"stdout","text":["Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz\n","\u001b[1m17464789/17464789\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 0us/step\n","Shape of X train: (25000,)\n","Shape of y train: (25000,)\n","Shape of X test: (25000,)\n","Shape of y test: (25000,)\n"]}]},{"cell_type":"code","source":["# создание словаря для перевода индексов в слова\n","# заргузка словаря \"слово:индекс\"\n","word_to_id = imdb.get_word_index()\n","# уточнение словаря\n","word_to_id = {key:(value + index_from) for key,value in word_to_id.items()}\n","word_to_id[\"<PAD>\"] = 0\n","word_to_id[\"<START>\"] = 1\n","word_to_id[\"<UNK>\"] = 2\n","word_to_id[\"<UNUSED>\"] = 3\n","# создание обратного словаря \"индекс:слово\"\n","id_to_word = {value:key for key,value in word_to_id.items()}\n","\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"zMtAST4d0VaM","executionInfo":{"status":"ok","timestamp":1765983530313,"user_tz":-180,"elapsed":2232,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"48cd3621-3c3d-41b0-8d77-c42c32e47c75"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb_word_index.json\n","\u001b[1m1641221/1641221\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1us/step\n"]}]},{"cell_type":"code","source":["print(X_train[23])\n","print('len:',len(X_train[23]))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"KnfAYV9e0mym","executionInfo":{"status":"ok","timestamp":1765983620380,"user_tz":-180,"elapsed":39,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"165ae9e5-07c1-45f6-81ff-6a54f631277b"},"execution_count":8,"outputs":[{"output_type":"stream","name":"stdout","text":["[1, 14, 20, 9, 290, 149, 48, 25, 358, 2, 120, 318, 302, 50, 26, 49, 221, 2057, 10, 10, 1212, 39, 15, 45, 801, 2, 2, 363, 2396, 7, 2, 209, 2327, 283, 8, 4, 425, 10, 10, 45, 24, 290, 3613, 972, 4, 65, 198, 40, 3462, 1224, 2, 23, 6, 4457, 225, 24, 76, 50, 8, 895, 19, 45, 164, 204, 5, 24, 55, 318, 38, 92, 140, 11, 18, 4, 65, 33, 32, 43, 168, 33, 4, 302, 10, 10, 17, 47, 77, 1046, 12, 188, 6, 117, 2, 33, 4, 130, 2, 4, 2, 7, 87, 3709, 2199, 7, 35, 2504, 5, 33, 211, 320, 2504, 132, 190, 48, 25, 2754, 4, 1273, 2, 45, 6, 1682, 8, 2, 42, 24, 8, 2, 10, 10, 32, 11, 32, 45, 6, 542, 3709, 22, 290, 319, 18, 15, 1288, 5, 15, 584]\n","len: 146\n"]}]},{"cell_type":"code","source":["review_as_text = ' '.join(id_to_word[id] for id in X_train[23])\n","print(review_as_text)\n","print('len:',len(review_as_text))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eFf0XX2b0_Na","executionInfo":{"status":"ok","timestamp":1765983653187,"user_tz":-180,"elapsed":8,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"49af7bce-a738-4b08-a35a-667b0cd699f8"},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["<START> this movie is worth watching if you enjoy <UNK> over special effects there are some interesting visuals br br aside from that it's typical <UNK> <UNK> hollywood fare of <UNK> without substance true to the title br br it's not worth picking apart the story that's like performing brain <UNK> on a dinosaur there's not much there to begin with it's nothing original and not very special so don't go in for the story at all just look at the effects br br as has been mentioned it got a little <UNK> at the end <UNK> the <UNK> of great fx treatment of an invisible and at times half invisible man however if you ignore the standard <UNK> it's a sight to <UNK> or not to <UNK> br br all in all it's a decent fx film worth seeing for that purpose and that alone\n","len: 763\n"]}]},{"cell_type":"code","source":["print('MAX Len: ',len(max(X_train, key=len)))\n","print('MIN Len: ',len(min(X_train, key=len)))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"yqXFOWGa1E0j","executionInfo":{"status":"ok","timestamp":1765983671908,"user_tz":-180,"elapsed":9,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"ab5edfa3-f814-4f1f-b09c-61d1027a655b"},"execution_count":10,"outputs":[{"output_type":"stream","name":"stdout","text":["MAX Len: 2494\n","MIN Len: 11\n"]}]},{"cell_type":"code","source":["# предобработка данных\n","from tensorflow.keras.utils import pad_sequences\n","max_words = 500\n","X_train = pad_sequences(X_train, maxlen=max_words, value=0, padding='pre', truncating='post')\n","X_test = pad_sequences(X_test, maxlen=max_words, value=0, padding='pre', truncating='post')"],"metadata":{"id":"o89GWgu51KkF","executionInfo":{"status":"ok","timestamp":1765983696841,"user_tz":-180,"elapsed":1297,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}}},"execution_count":11,"outputs":[]},{"cell_type":"code","source":["print('MAX Len: ',len(max(X_train, key=len)))\n","print('MIN Len: ',len(min(X_train, key=len)))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"t-HAPdSq1MxI","executionInfo":{"status":"ok","timestamp":1765983703497,"user_tz":-180,"elapsed":2,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"57f5f920-e872-4d8b-ba8d-b01e60089253"},"execution_count":12,"outputs":[{"output_type":"stream","name":"stdout","text":["MAX Len: 500\n","MIN Len: 500\n"]}]},{"cell_type":"code","source":["print(X_train[23])\n","print('len:',len(X_train[23]))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pFijUmIL1N3o","executionInfo":{"status":"ok","timestamp":1765983717854,"user_tz":-180,"elapsed":15,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"7fde05fe-3d14-4946-b2c9-61495d2cc387"},"execution_count":13,"outputs":[{"output_type":"stream","name":"stdout","text":["[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"," 0 0 0 0 1 14 20 9 290 149 48 25 358 2\n"," 120 318 302 50 26 49 221 2057 10 10 1212 39 15 45\n"," 801 2 2 363 2396 7 2 209 2327 283 8 4 425 10\n"," 10 45 24 290 3613 972 4 65 198 40 3462 1224 2 23\n"," 6 4457 225 24 76 50 8 895 19 45 164 204 5 24\n"," 55 318 38 92 140 11 18 4 65 33 32 43 168 33\n"," 4 302 10 10 17 47 77 1046 12 188 6 117 2 33\n"," 4 130 2 4 2 7 87 3709 2199 7 35 2504 5 33\n"," 211 320 2504 132 190 48 25 2754 4 1273 2 45 6 1682\n"," 8 2 42 24 8 2 10 10 32 11 32 45 6 542\n"," 3709 22 290 319 18 15 1288 5 15 584]\n","len: 500\n"]}]},{"cell_type":"code","source":["review_as_text = ' '.join(id_to_word[id] for id in X_train[23])\n","print(review_as_text)\n","print('len:',len(review_as_text))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"SJ0r-p8l1Sv4","executionInfo":{"status":"ok","timestamp":1765983767943,"user_tz":-180,"elapsed":15,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"42d68b4c-dcdc-43cb-81a6-34a6570d9aaa"},"execution_count":17,"outputs":[{"output_type":"stream","name":"stdout","text":["<PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <PAD> <START> this movie is worth watching if you enjoy <UNK> over special effects there are some interesting visuals br br aside from that it's typical <UNK> <UNK> hollywood fare of <UNK> without substance true to the title br br it's not worth picking apart the story that's like performing brain <UNK> on a dinosaur there's not much there to begin with it's nothing original and not very special so don't go in for the story at all just look at the effects br br as has been mentioned it got a little <UNK> at the end <UNK> the <UNK> of great fx treatment of an invisible and at times half invisible man however if you ignore the standard <UNK> it's a sight to <UNK> or not to <UNK> br br all in all it's a decent fx film worth seeing for that purpose and that alone\n","len: 2887\n"]}]},{"cell_type":"code","source":["# вывод данных\n","print('X train: \\n',X_train)\n","print('X train: \\n',X_test)\n","\n","# вывод размерностей\n","print('Shape of X train:', X_train.shape)\n","print('Shape of X test:', X_test.shape)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hsbobKXb1dL0","executionInfo":{"status":"ok","timestamp":1765983790872,"user_tz":-180,"elapsed":19,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"9813b826-988d-46f1-aa98-9a82faa8fae4"},"execution_count":18,"outputs":[{"output_type":"stream","name":"stdout","text":["X train: \n"," [[ 0 0 0 ... 6 52 106]\n"," [ 0 0 0 ... 87 22 231]\n"," [ 0 0 0 ... 6 158 158]\n"," ...\n"," [ 0 0 0 ... 1005 4 1630]\n"," [ 0 0 0 ... 9 6 991]\n"," [ 0 0 0 ... 7 32 58]]\n","X train: \n"," [[ 0 0 0 ... 4 2 2]\n"," [ 0 0 0 ... 6 2 123]\n"," [ 0 0 0 ... 2 11 831]\n"," ...\n"," [ 1 14 402 ... 819 45 131]\n"," [ 0 0 0 ... 17 1540 2]\n"," [ 1 17 6 ... 1026 362 37]]\n","Shape of X train: (25000, 500)\n","Shape of X test: (25000, 500)\n"]}]},{"cell_type":"code","source":["embed_dim = 32\n","lstm_units = 64\n","\n","model = Sequential()\n","model.add(layers.Embedding(input_dim=vocabulary_size, output_dim=embed_dim, input_length=max_words, input_shape=(max_words,)))\n","model.add(layers.LSTM(lstm_units))\n","model.add(layers.Dropout(0.5))\n","model.add(layers.Dense(1, activation='sigmoid'))\n","\n","model.summary()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":363},"id":"cgVZk2R81nLO","executionInfo":{"status":"ok","timestamp":1765983814420,"user_tz":-180,"elapsed":1762,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"95e38ad5-7969-415d-9fd3-ad36221ee7ce"},"execution_count":19,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/embedding.py:97: UserWarning: Argument `input_length` is deprecated. Just remove it.\n"," warnings.warn(\n","/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/embedding.py:100: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n"," super().__init__(**kwargs)\n"]},{"output_type":"display_data","data":{"text/plain":["\u001b[1mModel: \"sequential\"\u001b[0m\n"],"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n","</pre>\n"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n","┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n","┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n","│ embedding (\u001b[38;5;33mEmbedding\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m500\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m160,000\u001b[0m │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ lstm (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m24,832\u001b[0m │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dropout (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m65\u001b[0m │\n","└─────────────────────────────────┴────────────────────────┴───────────────┘\n"],"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n","┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n","┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n","│ embedding (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Embedding</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">500</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">160,000</span> │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ lstm (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">24,832</span> │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dropout (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n","├─────────────────────────────────┼────────────────────────┼───────────────┤\n","│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span> │\n","└─────────────────────────────────┴────────────────────────┴───────────────┘\n","</pre>\n"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["\u001b[1m Total params: \u001b[0m\u001b[38;5;34m184,897\u001b[0m (722.25 KB)\n"],"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">184,897</span> (722.25 KB)\n","</pre>\n"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m184,897\u001b[0m (722.25 KB)\n"],"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">184,897</span> (722.25 KB)\n","</pre>\n"]},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"],"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n","</pre>\n"]},"metadata":{}}]},{"cell_type":"code","source":["# компилируем и обучаем модель\n","batch_size = 64\n","epochs = 3\n","model.compile(loss=\"binary_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"])\n","model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.2)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"GTLaDqUc1qES","executionInfo":{"status":"ok","timestamp":1765983854527,"user_tz":-180,"elapsed":24070,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"524a1871-22c0-4d7b-bc92-3c35695e458a"},"execution_count":20,"outputs":[{"output_type":"stream","name":"stdout","text":["Epoch 1/3\n","\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 22ms/step - accuracy: 0.6255 - loss: 0.6261 - val_accuracy: 0.8294 - val_loss: 0.3905\n","Epoch 2/3\n","\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 21ms/step - accuracy: 0.8643 - loss: 0.3334 - val_accuracy: 0.8626 - val_loss: 0.3467\n","Epoch 3/3\n","\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 19ms/step - accuracy: 0.8877 - loss: 0.2905 - val_accuracy: 0.8722 - val_loss: 0.3317\n"]},{"output_type":"execute_result","data":{"text/plain":["<keras.src.callbacks.history.History at 0x78f347b1fb30>"]},"metadata":{},"execution_count":20}]},{"cell_type":"code","source":["test_loss, test_acc = model.evaluate(X_test, y_test)\n","print(f\"\\nTest accuracy: {test_acc}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"x1suf0Ja1zHn","executionInfo":{"status":"ok","timestamp":1765983869364,"user_tz":-180,"elapsed":7401,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"a7802332-5719-4270-f626-1526a64531b9"},"execution_count":21,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[1m782/782\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 9ms/step - accuracy: 0.8640 - loss: 0.3313\n","\n","Test accuracy: 0.8622000217437744\n"]}]},{"cell_type":"code","source":["#значение метрики качества классификации на тестовых данных\n","print(f\"\\nTest accuracy: {test_acc}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2v7LKydR2Bjs","executionInfo":{"status":"ok","timestamp":1765983940438,"user_tz":-180,"elapsed":48,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"8235b522-9545-4313-f5a1-59ef89873352"},"execution_count":22,"outputs":[{"output_type":"stream","name":"stdout","text":["\n","Test accuracy: 0.8622000217437744\n"]}]},{"cell_type":"code","source":["#отчет о качестве классификации тестовой выборки\n","y_score = model.predict(X_test)\n","y_pred = [1 if y_score[i,0]>=0.5 else 0 for i in range(len(y_score))]\n","\n","from sklearn.metrics import classification_report\n","print(classification_report(y_test, y_pred, labels = [0, 1], target_names=['Negative', 'Positive']))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vvZxAYYg2Hr1","executionInfo":{"status":"ok","timestamp":1765983962172,"user_tz":-180,"elapsed":10700,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"0951f090-e463-4ea3-afd5-edc55e4b2bc8"},"execution_count":23,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[1m782/782\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step\n"," precision recall f1-score support\n","\n"," Negative 0.83 0.91 0.87 12500\n"," Positive 0.90 0.81 0.86 12500\n","\n"," accuracy 0.86 25000\n"," macro avg 0.87 0.86 0.86 25000\n","weighted avg 0.87 0.86 0.86 25000\n","\n"]}]},{"cell_type":"code","source":["#построение ROC-кривой и AUC ROC\n","from sklearn.metrics import roc_curve, auc\n","\n","fpr, tpr, thresholds = roc_curve(y_test, y_score)\n","plt.plot(fpr, tpr)\n","plt.grid()\n","plt.xlabel('False Positive Rate')\n","plt.ylabel('True Positive Rate')\n","plt.title('ROC')\n","plt.show()\n","print('AUC ROC:', auc(fpr, tpr))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":490},"id":"7IGX_vWY20SC","executionInfo":{"status":"ok","timestamp":1765984128331,"user_tz":-180,"elapsed":618,"user":{"displayName":"Чиёми Анзай","userId":"17549274460477558773"}},"outputId":"c6f239e9-1b43-4ac5-9f8b-22950df9bf9e"},"execution_count":24,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 640x480 with 1 Axes>"],"image/png":"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r1749ddfba9v374dAwcOhJ+fH+Li4vDEE0+gvLz8srUpFApERUUhJiYGt9xyC5544gls3rwZlZWVkCQJzz//PFq2bAmdTofu3btjw4YNtm1NJhOSk5MRHR0NvV6Pa665BmlpaXb7rj0t1bp1awBAjx49oFAocNNNNwGwPxry7rvvIiYmxm4WbgC48847cf/999uef/311+jZsyf0ej3atGmDuXPnorq6+rKfU61WIyoqCrGxsUhMTMSoUaOQkZFhe91iseCBBx5A69at4efnhw4dOmDRokW215977jl8+OGH+Prrr21HgbZu3QoAOHHiBEaPHo3Q0FA0a9YMd955J44fP37Zeoh8BcMNkY9RKpX473//iz/++AMffvghvvvuOzzzzDOXXH/cuHFo2bIldu/ejT179mD69OnQaDQAgGPHjmH48OG4++678dtvv2H16tXYvn07kpOTHarJz88PkiShuroaixYtwuuvv47XXnsNv/32G5KSknDHHXfgzz//BAD897//xdq1a/Hpp58iKysLH3/8MeLj4+vd765duwAAmzdvRl5eHr744os664waNQrnzp3D999/b1tWVFSEDRs2YNy4cQCAbdu2YcKECZgyZQoOHjyId955B+np6XjppZca/BmPHz+OjRs3QqvV2pZJkoSWLVtizZo1OHjwIObMmYOZM2fi008/BQBMnToVo0ePxvDhw5GXl4e8vDz0798fZrMZSUlJCAoKwrZt27Bjxw4EBgZi+PDhMJlMDa6JyGu5fGpOInK7iRMnCpVKJQICAmx/7rnnnnrXXbNmjWjevLnt+QcffCBCQkJsz4OCgkR6enq92z7wwAPioYceslu2bds2oVQqRWVlZb3b/H3/R44cEe3btxe9e/cWQggRExMjXnrpJbttrr/+evHoo48KIYR4/PHHxZAhQ4QkSfXuH4D48ssvhRBC5OTkCABi3759duv8fUbzO++8U9x///225++8846IiYkRFotFCCHEzTffLObNm2e3jxUrVojo6Oh6axBCiNTUVKFUKkVAQIDQ6/W22ZMXLFhwyW2EEOKxxx4Td9999yVrrX3vDh062PXAaDQKPz8/sXHjxsvun8gXcMwNkZcaPHgw/ve//9meBwQEALAexUhLS8Phw4dhMBhQXV2NqqoqVFRUwN/fv85+UlJS8OCDD2LFihW2Uytt27YFYD1l9dtvv+Hjjz+2rS+EgCRJyMnJQadOneqtraSkBIGBgZAkCVVVVbjhhhuwdOlSGAwGnD59GgMGDLBbf8CAAdi/fz8A6ymloUOHokOHDhg+fDhuv/12DBs27Kp6NW7cOEyePBlvv/02dDodPv74Y/zrX/+CUqm0fc4dO3bYHamxWCyX7RsAdOjQAWvXrkVVVRU++ugjZGZm4vHHH7dbZ/HixVi2bBlyc3NRWVkJk8mE7t27X7be/fv34+jRowgKCrJbXlVVhWPHjjWiA0TeheGGyEsFBASgXbt2dsuOHz+O22+/HY888gheeuklNGvWDNu3b8cDDzwAk8lU75f0c889h7Fjx2LdunX49ttvkZqailWrVuGf//wnysrK8O9//xtPPPFEne1atWp1ydqCgoKwd+9eKJVKREdHw8/PDwBgMBiu+Ll69uyJnJwcfPvtt9i8eTNGjx6NxMREfPbZZ1fc9lJGjBgBIQTWrVuH66+/Htu2bcMbb7xhe72srAxz587FXXfdVWdbvV5/yf1qtVrb38HLL7+M2267DXPnzsULL7wAAFi1ahWmTp2K119/Hf369UNQUBDmz5+PX3755bL1lpWVoVevXnahslZTGTROJCeGGyIfsmfPHkiShNdff912VKJ2fMfltG/fHu3bt8eTTz6Je++9Fx988AH++c9/omfPnjh48GCdEHUlSqWy3m2Cg4MRExODHTt2YNCgQbblO3bsQJ8+fezWGzNmDMaMGYN77rkHw4cPR1FREZo1a2a3v9rxLRaL5bL16PV63HXXXfj4449x9OhRdOjQAT179rS93rNnT2RlZTn8Of9u1qxZGDJkCB555BHb5+zfvz8effRR2zp/P/Ki1Wrr1N+zZ0+sXr0aERERCA4OvqqaiLwRBxQT+ZB27drBbDbjzTffRHZ2NlasWIElS5Zccv3KykokJydj69at+Ouvv7Bjxw7s3r3bdrpp2rRp+Omnn5CcnIzMzEz8+eef+Prrrx0eUHyxp59+Gq+88gpWr16NrKwsTJ8+HZmZmZgyZQoAYMGCBfjkk09w+PBhHDlyBGvWrEFUVFS9Nx6MiIiAn58fNmzYgIKCApSUlFzyfceNG4d169Zh2bJltoHEtebMmYPly5dj7ty5+OOPP3Do0CGsWrUKs2bNcuiz9evXD127dsW8efMAANdeey1+/fVXbNy4EUeOHMHs2bOxe/duu23i4+Px22+/ISsrC4WFhTCbzRg3bhzCw8Nx5513Ytu2bcjJycHWrVvxxBNP4OTJkw7VROSV5B70Q0TOV98g1FoLFiwQ0dHRws/PTyQlJYnly5cLAOL8+fNCCPsBv0ajUfzrX/8ScXFxQqvVipiYGJGcnGw3WHjXrl1i6NChIjAwUAQEBIiuXbvWGRB8sb8PKP47i8UinnvuOREbGys0Go3o1q2b+Pbbb22vv/vuu6J79+4iICBABAcHi5tvvlns3bvX9jouGlAshBDvvfeeiIuLE0qlUgwaNOiS/bFYLCI6OloAEMeOHatT14YNG0T//v2Fn5+fCA4OFn369BHvvvvuJT9Hamqq6NatW53ln3zyidDpdCI3N1dUVVWJ++67T4SEhIjQ0FDxyCOPiOnTp9ttd+bMGVt/AYjvv/9eCCFEXl6emDBhgggPDxc6nU60adNGTJ48WZSUlFyyJiJfoRBCCHnjFREREZHz8LQUEREReRWGGyIiIvIqDDdERETkVRhuiIiIyKsw3BAREZFXYbghIiIir8JwQ0RERF6F4YaIiIi8CsMNEREReRWGGyIiIvIqDDdERETkVRhuiIiIyKv8fz1oc0+wRXZPAAAAAElFTkSuQmCC\n"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["AUC ROC: 0.9370553728000001\n"]}]}]} |