Compare commits
No commits in common. "9a516679cad67a812c9af092e79172b372df82b4" and "7469db0fac8e6ab4b718be30d39df0fd8d230d27" have entirely different histories.
9a516679ca
...
7469db0fac
@ -5,7 +5,7 @@
|
|||||||
"id": "7915f17e",
|
"id": "7915f17e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Инициализация Keras"
|
"### Инициализация Keras"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -930,8 +930,8 @@
|
|||||||
"### Архитектура LeNet-5\n",
|
"### Архитектура LeNet-5\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Изменения относительно оригинальной архитектуры:\n",
|
"Изменения относительно оригинальной архитектуры:\n",
|
||||||
"- Увеличение фильтров в первом сверточном слое с 6 до 32 и втором сверточном слое с 16 до 64.\n",
|
"- Увеличение фильтров в первом и втором сверточных слоях до 32 и 64 с 6 и 16.\n",
|
||||||
"- Снижение количества субдискретизации активаций до одной вместо двух, только после второго сверточного слоя.\n",
|
"- Снижение количества субдискретизации активаций до одной вместо двух.\n",
|
||||||
"- Применение функции активации ReLU."
|
"- Применение функции активации ReLU."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -5,26 +5,7 @@
|
|||||||
"id": "7915f17e",
|
"id": "7915f17e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Инициализация Keras\n",
|
"### Инициализация Keras"
|
||||||
"\n",
|
|
||||||
"Для ускорения обучения на GPU следует настраивать backend под конкретную ОС и модель GPU.\n",
|
|
||||||
"\n",
|
|
||||||
"Для ускорения pytorch на Windows и свежей карте от NVidia следует установить вместо обычного pytorch:\n",
|
|
||||||
"```\n",
|
|
||||||
"torch = { version = \"^2.7.0+cu128\", source = \"pytorch-cuda128\" }\n",
|
|
||||||
"torchaudio = { version = \"^2.7.0+cu128\", source = \"pytorch-cuda128\" }\n",
|
|
||||||
"torchvision = { version = \"^0.22.0+cu128\", source = \"pytorch-cuda128\" }\n",
|
|
||||||
"```\n",
|
|
||||||
"\n",
|
|
||||||
"Обязательно следует включить репозиторий\n",
|
|
||||||
"```\n",
|
|
||||||
"[[tool.poetry.source]]\n",
|
|
||||||
"name = \"pytorch-cuda128\"\n",
|
|
||||||
"url = \"https://download.pytorch.org/whl/cu128\"\n",
|
|
||||||
"priority = \"explicit\"\n",
|
|
||||||
"```\n",
|
|
||||||
"\n",
|
|
||||||
"Для macOS можно использовать jax 0.5.0 (обязательно такая версия) + jax-metal 0.1.1"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -59,7 +40,7 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"В данном примере используется фрагмент набора данных Cats and Dogs Classification Dataset\n",
|
"В данном примере используется фрагмент набора данных Cats and Dogs Classification Dataset\n",
|
||||||
"\n",
|
"\n",
|
||||||
"В наборе данных два класса (всего 24 998 изображений): кошки (12 499 изображения) и собаки (12 499 изображения)\n",
|
"В наборе данных два класса: кошки и собаки\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Ссылка: https://www.kaggle.com/datasets/bhavikjikadara/dog-and-cat-classification-dataset"
|
"Ссылка: https://www.kaggle.com/datasets/bhavikjikadara/dog-and-cat-classification-dataset"
|
||||||
]
|
]
|
||||||
@ -83,19 +64,7 @@
|
|||||||
"id": "85652835",
|
"id": "85652835",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Формирование выборок\n",
|
"#### Формирование выборок"
|
||||||
"\n",
|
|
||||||
"Для формирования выборок используется устаревший (deprecated) класс ImageDataGenerator\n",
|
|
||||||
"\n",
|
|
||||||
"Вместо него рекомендуется использовать image_dataset_from_directory (https://keras.io/api/data_loading/image/)\n",
|
|
||||||
"\n",
|
|
||||||
"Для использования image_dataset_from_directory требуется tensorflow\n",
|
|
||||||
"\n",
|
|
||||||
"ImageDataGenerator формирует две выборки: обучающую и валидационную (80 на 20).\n",
|
|
||||||
"\n",
|
|
||||||
"В каждой выборке изображения масштабируются до размера 224 на 224 пиксела с RGB пространством.\n",
|
|
||||||
"\n",
|
|
||||||
"Изображения подгружаются с диска в процессе обучения и валидации модели."
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -160,9 +129,7 @@
|
|||||||
"id": "bfb9434d",
|
"id": "bfb9434d",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"### Архитектура AlexNet\n",
|
"### Архитектура AlexNet"
|
||||||
"\n",
|
|
||||||
"Модель AlexNet описана в лекции про глубокое обучение"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -628,9 +595,7 @@
|
|||||||
"id": "a831795e",
|
"id": "a831795e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Оценка качества модели\n",
|
"#### Оценка качества модели"
|
||||||
"\n",
|
|
||||||
"Качество модели - 88.2 %.#### Оценка качества модели"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -661,16 +626,6 @@
|
|||||||
"alexnet_model.evaluate(valid)"
|
"alexnet_model.evaluate(valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "7c1b7fd8",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Пример использования обученной модели\n",
|
|
||||||
"\n",
|
|
||||||
"Для примера используются случайные изображения из сети Интернет"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 16,
|
"execution_count": 16,
|
||||||
|
@ -5,26 +5,7 @@
|
|||||||
"id": "7915f17e",
|
"id": "7915f17e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Инициализация Keras\n",
|
"### Инициализация Keras"
|
||||||
"\n",
|
|
||||||
"Для ускорения обучения на GPU следует настраивать backend под конкретную ОС и модель GPU.\n",
|
|
||||||
"\n",
|
|
||||||
"Для ускорения pytorch на Windows и свежей карте от NVidia следует установить вместо обычного pytorch:\n",
|
|
||||||
"```\n",
|
|
||||||
"torch = { version = \"^2.7.0+cu128\", source = \"pytorch-cuda128\" }\n",
|
|
||||||
"torchaudio = { version = \"^2.7.0+cu128\", source = \"pytorch-cuda128\" }\n",
|
|
||||||
"torchvision = { version = \"^0.22.0+cu128\", source = \"pytorch-cuda128\" }\n",
|
|
||||||
"```\n",
|
|
||||||
"\n",
|
|
||||||
"Обязательно следует включить репозиторий\n",
|
|
||||||
"```\n",
|
|
||||||
"[[tool.poetry.source]]\n",
|
|
||||||
"name = \"pytorch-cuda128\"\n",
|
|
||||||
"url = \"https://download.pytorch.org/whl/cu128\"\n",
|
|
||||||
"priority = \"explicit\"\n",
|
|
||||||
"```\n",
|
|
||||||
"\n",
|
|
||||||
"Для macOS можно использовать jax 0.5.0 (обязательно такая версия) + jax-metal 0.1.1"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -59,7 +40,7 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"В данном примере используется фрагмент набора данных Cats and Dogs Classification Dataset\n",
|
"В данном примере используется фрагмент набора данных Cats and Dogs Classification Dataset\n",
|
||||||
"\n",
|
"\n",
|
||||||
"В наборе данных два класса (всего 24 998 изображений): кошки (12 499 изображения) и собаки (12 499 изображения)\n",
|
"В наборе данных два класса: кошки и собаки\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Ссылка: https://www.kaggle.com/datasets/bhavikjikadara/dog-and-cat-classification-dataset"
|
"Ссылка: https://www.kaggle.com/datasets/bhavikjikadara/dog-and-cat-classification-dataset"
|
||||||
]
|
]
|
||||||
@ -83,19 +64,7 @@
|
|||||||
"id": "85652835",
|
"id": "85652835",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Формирование выборок\n",
|
"#### Формирование выборок"
|
||||||
"\n",
|
|
||||||
"Для формирования выборок используется устаревший (deprecated) класс ImageDataGenerator\n",
|
|
||||||
"\n",
|
|
||||||
"Вместо него рекомендуется использовать image_dataset_from_directory (https://keras.io/api/data_loading/image/)\n",
|
|
||||||
"\n",
|
|
||||||
"Для использования image_dataset_from_directory требуется tensorflow\n",
|
|
||||||
"\n",
|
|
||||||
"ImageDataGenerator формирует две выборки: обучающую и валидационную (80 на 20).\n",
|
|
||||||
"\n",
|
|
||||||
"В каждой выборке изображения масштабируются до размера 224 на 224 пиксела с RGB пространством.\n",
|
|
||||||
"\n",
|
|
||||||
"Изображения подгружаются с диска в процессе обучения и валидации модели."
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -168,10 +137,7 @@
|
|||||||
"id": "ae32c572",
|
"id": "ae32c572",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"Загрузка предобученной модели VGG19:\n",
|
"Загрузка предобученной модели и отключение обучения для ее слоев"
|
||||||
"- Загрузка весов, полученных при обучении модели на наборе данных ImageNet\n",
|
|
||||||
"- Отключение полносвязанных слоев для адаптации к новой задаче\n",
|
|
||||||
"- Модель будет работать с изображениями 224 на 224 пиксела и RGB пространством"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -308,9 +274,7 @@
|
|||||||
"id": "49fceead",
|
"id": "49fceead",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Обучение глубокой модели\n",
|
"#### Обучение глубокой модели"
|
||||||
"\n",
|
|
||||||
"Обучение остановлено после второго шага, так как качество модели приемлемое"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -394,9 +358,7 @@
|
|||||||
"id": "a831795e",
|
"id": "a831795e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"#### Оценка качества модели\n",
|
"#### Оценка качества модели"
|
||||||
"\n",
|
|
||||||
"Качество модели - 96.3 %."
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -427,16 +389,6 @@
|
|||||||
"tl_model.evaluate(valid)"
|
"tl_model.evaluate(valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "9d0106c8",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Пример использования обученной модели\n",
|
|
||||||
"\n",
|
|
||||||
"Для примера используются случайные изображения из сети Интернет"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 8,
|
"execution_count": 8,
|
||||||
|
@ -1,21 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "d5b48413",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"### Пример предобработки и векторизации текстовых данных с помощью word2vec"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "1ce7f779",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Инициализация spacy и загрузка модели для русского языка"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
@ -28,14 +12,6 @@
|
|||||||
"sp = spacy.load(\"ru_core_news_lg\")"
|
"sp = spacy.load(\"ru_core_news_lg\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "e0445088",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка содержимого текстовых документов"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
@ -244,21 +220,6 @@
|
|||||||
"display(df.head(), df.tail())"
|
"display(df.head(), df.tail())"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "6c67ab8d",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Предобработка текстовых данных\n",
|
|
||||||
"- приведение к нижнему регистру;\n",
|
|
||||||
"- удаление стоп-слов;\n",
|
|
||||||
"- удаление знаков препинания и спец-символов;\n",
|
|
||||||
"- лемматизация;\n",
|
|
||||||
"- формирование би-грамм с помощью Phraser, Phrases.\n",
|
|
||||||
"\n",
|
|
||||||
"У Phrases можно изменять параметры: min_count и threshold (минимальное количество вхождений и порог оценки устойчивости) для повышения качества полученных би-грамм."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
@ -738,21 +699,6 @@
|
|||||||
"df"
|
"df"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "03c24ec0",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Векторизация текстовых данных с помощью word2vec\n",
|
|
||||||
"- функция explode объединяет все массивы столбца prep_text в один;\n",
|
|
||||||
"- будет получено 64-мерное пространство (векторы длиной 64 элемента);\n",
|
|
||||||
"- используется метод skip-gram (sg=1). Данный метод предпочтительно использовать на небольшом корпусе, а CBOW на большом (sg=0);\n",
|
|
||||||
"- размер окна 10 (по 10 слов слева и справа от текущего для вычисления контекста);\n",
|
|
||||||
"- min_count - минимальное количество вхождений слова в корпус для включения в n-мерное пространство;\n",
|
|
||||||
"- workers - количество потоков для вычисления;\n",
|
|
||||||
"- seed - задание начального состояния для повторяемости (random_state).\n"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
@ -774,16 +720,6 @@
|
|||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "ef97fa8a",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Вывод уникальных идентификаторов для каждого слова\n",
|
|
||||||
"\n",
|
|
||||||
"Слова в пространстве хранятся в виде числового идентификатора для сокращения потребления памяти"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
@ -1805,14 +1741,6 @@
|
|||||||
"word2vec.wv.key_to_index"
|
"word2vec.wv.key_to_index"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "63be2cce",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Вывод трех наиболее похожих по смыслу слова для слова 1С"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
@ -1836,14 +1764,6 @@
|
|||||||
"word2vec.wv.most_similar(\"1с\", topn=3)"
|
"word2vec.wv.most_similar(\"1с\", topn=3)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "b1c06780",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Координаты слова 1С в 64-мерном пространстве"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 8,
|
"execution_count": 8,
|
||||||
@ -1881,14 +1801,6 @@
|
|||||||
"word2vec.wv[\"1с\"]"
|
"word2vec.wv[\"1с\"]"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "98434d1e",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Поиск лишнего по смыслу слова (самое отдаленное по смыслу слово)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 9,
|
"execution_count": 9,
|
||||||
@ -1910,14 +1822,6 @@
|
|||||||
"word2vec.wv.doesnt_match(\"java php 1с oracle заказчик\".split())"
|
"word2vec.wv.doesnt_match(\"java php 1с oracle заказчик\".split())"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "88684648",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Смысловое расстояние между словами (расстояние в пространстве)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 10,
|
"execution_count": 10,
|
||||||
@ -1960,14 +1864,6 @@
|
|||||||
"word2vec.wv.similarity(\"java\", \"1с\")"
|
"word2vec.wv.similarity(\"java\", \"1с\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "98c93159",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Векторная арифметика: 1c - бухгалтерия + машина ="
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 12,
|
"execution_count": 12,
|
||||||
@ -1998,14 +1894,6 @@
|
|||||||
"word2vec.wv.most_similar(positive=[\"1с\", \"машина\"], negative=[\"бухгалтерия\"])"
|
"word2vec.wv.most_similar(positive=[\"1с\", \"машина\"], negative=[\"бухгалтерия\"])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "86ab3f05",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Векторная арифметика: субд - база + язык ="
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 13,
|
"execution_count": 13,
|
||||||
@ -2036,14 +1924,6 @@
|
|||||||
"word2vec.wv.most_similar(positive=[\"субд\", \"язык\"], negative=[\"база\"])"
|
"word2vec.wv.most_similar(positive=[\"субд\", \"язык\"], negative=[\"база\"])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "a293bb05",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Векторная арифметика: java - машина + бухгалтерия ="
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 14,
|
"execution_count": 14,
|
||||||
@ -2074,14 +1954,6 @@
|
|||||||
"word2vec.wv.most_similar(positive=[\"java\", \"бухгалтерия\"], negative=[\"машина\"])"
|
"word2vec.wv.most_similar(positive=[\"java\", \"бухгалтерия\"], negative=[\"машина\"])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "b70332a5",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Векторная арифметика: 866 - мгц + мбайт ="
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 15,
|
"execution_count": 15,
|
||||||
@ -2112,14 +1984,6 @@
|
|||||||
"word2vec.wv.most_similar(positive=[\"866\", \"мбайт\"], negative=[\"мгц\"])"
|
"word2vec.wv.most_similar(positive=[\"866\", \"мбайт\"], negative=[\"мгц\"])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "4f41fc6e",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Векторная арифметика: 866 - процессор + память ="
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 18,
|
"execution_count": 18,
|
||||||
@ -2150,14 +2014,6 @@
|
|||||||
"word2vec.wv.most_similar(positive=[\"866\", \"память\"], negative=[\"процессор\"])"
|
"word2vec.wv.most_similar(positive=[\"866\", \"память\"], negative=[\"процессор\"])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "a0414122",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Понижение размерности векторного пространства с 64 до 2 измерений"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 19,
|
"execution_count": 19,
|
||||||
@ -2295,16 +2151,6 @@
|
|||||||
"coords_df"
|
"coords_df"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "52e7a09b",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Визуализация векторного пространства\n",
|
|
||||||
"\n",
|
|
||||||
"Диаграмма интерактивная и позволяет изменять масштаб и перемещаться"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 20,
|
"execution_count": 20,
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "0fd64751",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Инициализация Keras"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 12,
|
"execution_count": 12,
|
||||||
@ -31,24 +23,6 @@
|
|||||||
"print(keras.__version__)"
|
"print(keras.__version__)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "c5e00991",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка данных для классификации с помощью глубоких сетей\n",
|
|
||||||
"\n",
|
|
||||||
"В качестве набора данных используется набор отзывов к фильмам с сайта IMDB.\n",
|
|
||||||
"\n",
|
|
||||||
"Набор включает 50 000 отзывов, половина из которых находится в обучающем наборе данных (x_train), а половина - в тестовом (x_valid). \n",
|
|
||||||
"\n",
|
|
||||||
"Данные уже предобработаны для простоты работы с ними.\n",
|
|
||||||
"\n",
|
|
||||||
"unique_words - в векторное пространство включается только слова, которые встречаются в корпусе не менее 5000 раз.\n",
|
|
||||||
"\n",
|
|
||||||
"max_length - максимальная длина отзыва (если больше, то обрезается, если меньше, то дополняется \"пустыми\" словами)."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 13,
|
"execution_count": 13,
|
||||||
@ -69,23 +43,6 @@
|
|||||||
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words, skip_top=50)"
|
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words, skip_top=50)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "022cf1f8",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Исследование набора данных\n",
|
|
||||||
"\n",
|
|
||||||
"Все слова закодированы числовыми идентификаторами для снижения расхода памяти\n",
|
|
||||||
"\n",
|
|
||||||
"Идентификаторы 0, 1 и 2 зарезервированы:\n",
|
|
||||||
"- 0 (PAD) - заполняющее (\"пустое\") слово для дополнения отзывов до длины 100;\n",
|
|
||||||
"- 1 (START) - определяет начло отзыва;\n",
|
|
||||||
"- 2 (UNK) - отфильтрованные при загрузке отзывов слова (редкие слова или стоп-слов).\n",
|
|
||||||
"\n",
|
|
||||||
"Далее идентификаторы определяют слова в порядке снижения частоты их встречаемости в корпусе."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 14,
|
"execution_count": 14,
|
||||||
@ -1113,16 +1070,6 @@
|
|||||||
"index_word"
|
"index_word"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "a04781ef",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Вывод первого отзыва из тренировочной выборки\n",
|
|
||||||
"\n",
|
|
||||||
"Отзывы содержат только идентификаторы для экономии памяти"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 15,
|
"execution_count": 15,
|
||||||
@ -1361,14 +1308,6 @@
|
|||||||
"X_train[0]"
|
"X_train[0]"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "d0eca5f5",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Можно заменить идентификаторы на реальные слова с учетом предобработки"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 16,
|
"execution_count": 16,
|
||||||
@ -1390,14 +1329,6 @@
|
|||||||
"\" \".join(index_word[id] for id in X_train[0])"
|
"\" \".join(index_word[id] for id in X_train[0])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "ab903f3e",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Можно вывести изначальный отзыв (если выключить удаление редких слов и стоп-слов)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 17,
|
"execution_count": 17,
|
||||||
@ -1420,16 +1351,6 @@
|
|||||||
"\" \".join(index_word[id] for id in textual_X_train[0])"
|
"\" \".join(index_word[id] for id in textual_X_train[0])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "35e4c578",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Приведение отзывов к длине max_length (100)\n",
|
|
||||||
"\n",
|
|
||||||
"padding и truncating - дополнение и обрезка отзывов начинается с начала (учитывается специфика затухания градиента в рекуррентных сетях)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 18,
|
"execution_count": 18,
|
||||||
@ -1443,16 +1364,6 @@
|
|||||||
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "87eac800",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Формирование архитектуры глубокой полносвязанной сети\n",
|
|
||||||
"\n",
|
|
||||||
"Первый слой (Embedding) выполняет векторизацию"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 19,
|
"execution_count": 19,
|
||||||
@ -1564,18 +1475,6 @@
|
|||||||
"simple_model.summary()"
|
"simple_model.summary()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "0ff9c40a",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Обучение модели\n",
|
|
||||||
"\n",
|
|
||||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
|
||||||
"\n",
|
|
||||||
"В дальнейшем веса можно загрузить"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 20,
|
"execution_count": 20,
|
||||||
@ -1626,16 +1525,6 @@
|
|||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "3c495301",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
|
||||||
"\n",
|
|
||||||
"Качество модели - 84.6 %."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 21,
|
"execution_count": 21,
|
||||||
@ -1665,14 +1554,6 @@
|
|||||||
"simple_model.evaluate(X_valid, y_valid)"
|
"simple_model.evaluate(X_valid, y_valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "b1157104",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 22,
|
"execution_count": 22,
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "624cd060",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Инициализация Keras"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 1,
|
||||||
@ -51,16 +43,6 @@
|
|||||||
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "43bc7663",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Приведение отзывов к длине max_length (400)\n",
|
|
||||||
"\n",
|
|
||||||
"padding и truncating - дополнение и обрезка отзывов начинается с начала (учитывается специфика затухания градиента в рекуррентных сетях)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
@ -74,16 +56,6 @@
|
|||||||
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "38c26048",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Формирование архитектуры глубокой сверточной сети\n",
|
|
||||||
"\n",
|
|
||||||
"Первый слой (Embedding) выполняет векторизацию"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
@ -216,18 +188,6 @@
|
|||||||
"conv_model.summary()"
|
"conv_model.summary()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "ddab8c65",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Обучение модели\n",
|
|
||||||
"\n",
|
|
||||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
|
||||||
"\n",
|
|
||||||
"В дальнейшем веса можно загрузить"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
@ -278,16 +238,6 @@
|
|||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "e5e1e1b7",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
|
||||||
"\n",
|
|
||||||
"Качество модели - 89.1 %."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
@ -317,14 +267,6 @@
|
|||||||
"conv_model.evaluate(X_valid, y_valid)"
|
"conv_model.evaluate(X_valid, y_valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "ee31cb44",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
|
@ -1,15 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "e13159d6",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Инициализация Keras\n",
|
|
||||||
"\n",
|
|
||||||
"torch был заменен на jax, так как с torch рекуррентные сети не работали"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 1,
|
||||||
@ -33,29 +23,6 @@
|
|||||||
"print(keras.__version__)"
|
"print(keras.__version__)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "06e989a5",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка данных для классификации с помощью глубоких сетей\n",
|
|
||||||
"\n",
|
|
||||||
"В качестве набора данных используется набор отзывов к фильмам с сайта IMDB.\n",
|
|
||||||
"\n",
|
|
||||||
"Набор включает 50 000 отзывов, половина из которых находится в обучающем наборе данных (x_train), а половина - в тестовом (x_valid). \n",
|
|
||||||
"\n",
|
|
||||||
"Метки (y_train и y_valid) имеют бинарный характер и назначены в соответствии с этими 10-балльными оценками:\n",
|
|
||||||
"- отзывы с четырьмя звездами или меньше считаются отрицательным (y = 0);\n",
|
|
||||||
"- отзывы с семью звездами или больше считаются положительными (y = 1);\n",
|
|
||||||
"- умеренные отзывы — с пятью или шестью звездами — не включались в набор данных, что упрощает задачу бинарной классификации.\n",
|
|
||||||
"\n",
|
|
||||||
"Данные уже предобработаны для простоты работы с ними.\n",
|
|
||||||
"\n",
|
|
||||||
"unique_words - в векторное пространство включается только слова, которые встречаются в корпусе не менее 10 000 раз.\n",
|
|
||||||
"\n",
|
|
||||||
"max_length - максимальная длина отзыва (если больше, то обрезается, если меньше, то дополняется \"пустыми\" словами)."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
@ -76,16 +43,6 @@
|
|||||||
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "86b62f23",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Приведение отзывов к длине max_length (100)\n",
|
|
||||||
"\n",
|
|
||||||
"padding и truncating - дополнение и обрезка отзывов начинается с начала (учитывается специфика затухания градиента в рекуррентных сетях)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
@ -99,17 +56,6 @@
|
|||||||
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "a78bde02",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Формирование архитектуры глубокой рекуррентной сети\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"Первый слой (Embedding) выполняет векторизацию"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
@ -218,18 +164,6 @@
|
|||||||
"rnn_model.summary()"
|
"rnn_model.summary()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "23900b11",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Обучение модели\n",
|
|
||||||
"\n",
|
|
||||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
|
||||||
"\n",
|
|
||||||
"В дальнейшем веса можно загрузить"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
@ -304,16 +238,6 @@
|
|||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "ccf878d3",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
|
||||||
"\n",
|
|
||||||
"Качество модели - 73.6 %."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
@ -343,14 +267,6 @@
|
|||||||
"rnn_model.evaluate(X_valid, y_valid)"
|
"rnn_model.evaluate(X_valid, y_valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "e05b98c0",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
|
@ -1,15 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "67f49f36",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Инициализация Keras\n",
|
|
||||||
"\n",
|
|
||||||
"torch был заменен на jax, так как с torch рекуррентные сети не работали"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 1,
|
||||||
@ -33,29 +23,6 @@
|
|||||||
"print(keras.__version__)"
|
"print(keras.__version__)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "b0bb5f9b",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка данных для классификации с помощью глубоких сетей\n",
|
|
||||||
"\n",
|
|
||||||
"В качестве набора данных используется набор отзывов к фильмам с сайта IMDB.\n",
|
|
||||||
"\n",
|
|
||||||
"Набор включает 50 000 отзывов, половина из которых находится в обучающем наборе данных (x_train), а половина - в тестовом (x_valid). \n",
|
|
||||||
"\n",
|
|
||||||
"Метки (y_train и y_valid) имеют бинарный характер и назначены в соответствии с этими 10-балльными оценками:\n",
|
|
||||||
"- отзывы с четырьмя звездами или меньше считаются отрицательным (y = 0);\n",
|
|
||||||
"- отзывы с семью звездами или больше считаются положительными (y = 1);\n",
|
|
||||||
"- умеренные отзывы — с пятью или шестью звездами — не включались в набор данных, что упрощает задачу бинарной классификации.\n",
|
|
||||||
"\n",
|
|
||||||
"Данные уже предобработаны для простоты работы с ними.\n",
|
|
||||||
"\n",
|
|
||||||
"unique_words - в векторное пространство включается только слова, которые встречаются в корпусе не менее 10 000 раз.\n",
|
|
||||||
"\n",
|
|
||||||
"max_length - максимальная длина отзыва (если больше, то обрезается, если меньше, то дополняется \"пустыми\" словами)."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
@ -76,16 +43,6 @@
|
|||||||
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "6cac9141",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Приведение отзывов к длине max_length (100)\n",
|
|
||||||
"\n",
|
|
||||||
"padding и truncating - дополнение и обрезка отзывов начинается с начала (учитывается специфика затухания градиента в рекуррентных сетях)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
@ -99,17 +56,6 @@
|
|||||||
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "02e37d8c",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Формирование архитектуры глубокой рекуррентной LSTM сети\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"Первый слой (Embedding) выполняет векторизацию"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
@ -218,18 +164,6 @@
|
|||||||
"lstm_model.summary()"
|
"lstm_model.summary()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "05334f15",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Обучение модели\n",
|
|
||||||
"\n",
|
|
||||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
|
||||||
"\n",
|
|
||||||
"В дальнейшем веса можно загрузить"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
@ -280,16 +214,6 @@
|
|||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "e3b39f42",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
|
||||||
"\n",
|
|
||||||
"Качество модели - 85.3 %."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
@ -319,14 +243,6 @@
|
|||||||
"lstm_model.evaluate(X_valid, y_valid)"
|
"lstm_model.evaluate(X_valid, y_valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "d1aa3151",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
|
@ -1,15 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "c2308ffe",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Инициализация Keras\n",
|
|
||||||
"\n",
|
|
||||||
"torch был заменен на jax, так как с torch рекуррентные сети не работали"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 1,
|
||||||
@ -33,29 +23,6 @@
|
|||||||
"print(keras.__version__)"
|
"print(keras.__version__)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "8e4a9a71",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка данных для классификации с помощью глубоких сетей\n",
|
|
||||||
"\n",
|
|
||||||
"В качестве набора данных используется набор отзывов к фильмам с сайта IMDB.\n",
|
|
||||||
"\n",
|
|
||||||
"Набор включает 50 000 отзывов, половина из которых находится в обучающем наборе данных (x_train), а половина - в тестовом (x_valid). \n",
|
|
||||||
"\n",
|
|
||||||
"Метки (y_train и y_valid) имеют бинарный характер и назначены в соответствии с этими 10-балльными оценками:\n",
|
|
||||||
"- отзывы с четырьмя звездами или меньше считаются отрицательным (y = 0);\n",
|
|
||||||
"- отзывы с семью звездами или больше считаются положительными (y = 1);\n",
|
|
||||||
"- умеренные отзывы — с пятью или шестью звездами — не включались в набор данных, что упрощает задачу бинарной классификации.\n",
|
|
||||||
"\n",
|
|
||||||
"Данные уже предобработаны для простоты работы с ними.\n",
|
|
||||||
"\n",
|
|
||||||
"unique_words - в векторное пространство включается только слова, которые встречаются в корпусе не менее 10 000 раз.\n",
|
|
||||||
"\n",
|
|
||||||
"max_length - максимальная длина отзыва (если больше, то обрезается, если меньше, то дополняется \"пустыми\" словами)."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
@ -76,16 +43,6 @@
|
|||||||
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
"(X_train, y_train), (X_valid, y_valid) = imdb.load_data(num_words=unique_words)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "c58423e9",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Приведение отзывов к длине max_length (100)\n",
|
|
||||||
"\n",
|
|
||||||
"padding и truncating - дополнение и обрезка отзывов начинается с начала (учитывается специфика затухания градиента в рекуррентных сетях)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
@ -99,17 +56,6 @@
|
|||||||
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
"X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "7db364f4",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Формирование архитектуры глубокой рекуррентной двунаправленной LSTM сети\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"Первый слой (Embedding) выполняет векторизацию"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
@ -218,18 +164,6 @@
|
|||||||
"blstm_model.summary()"
|
"blstm_model.summary()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "3a826105",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Обучение модели\n",
|
|
||||||
"\n",
|
|
||||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
|
||||||
"\n",
|
|
||||||
"В дальнейшем веса можно загрузить"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
@ -284,16 +218,6 @@
|
|||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "a47a8ff6",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
|
||||||
"\n",
|
|
||||||
"Качество модели - 84.6 %."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
@ -323,14 +247,6 @@
|
|||||||
"blstm_model.evaluate(X_valid, y_valid)"
|
"blstm_model.evaluate(X_valid, y_valid)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"id": "7001f712",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user