Compare commits
No commits in common. "9a516679cad67a812c9af092e79172b372df82b4" and "7469db0fac8e6ab4b718be30d39df0fd8d230d27" have entirely different histories.
9a516679ca
...
7469db0fac
@ -5,7 +5,7 @@
|
||||
"id": "7915f17e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras"
|
||||
"### Инициализация Keras"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -930,8 +930,8 @@
|
||||
"### Архитектура LeNet-5\n",
|
||||
"\n",
|
||||
"Изменения относительно оригинальной архитектуры:\n",
|
||||
"- Увеличение фильтров в первом сверточном слое с 6 до 32 и втором сверточном слое с 16 до 64.\n",
|
||||
"- Снижение количества субдискретизации активаций до одной вместо двух, только после второго сверточного слоя.\n",
|
||||
"- Увеличение фильтров в первом и втором сверточных слоях до 32 и 64 с 6 и 16.\n",
|
||||
"- Снижение количества субдискретизации активаций до одной вместо двух.\n",
|
||||
"- Применение функции активации ReLU."
|
||||
]
|
||||
},
|
||||
|
@ -5,26 +5,7 @@
|
||||
"id": "7915f17e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras\n",
|
||||
"\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"
|
||||
"### Инициализация Keras"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -59,7 +40,7 @@
|
||||
"\n",
|
||||
"В данном примере используется фрагмент набора данных Cats and Dogs Classification Dataset\n",
|
||||
"\n",
|
||||
"В наборе данных два класса (всего 24 998 изображений): кошки (12 499 изображения) и собаки (12 499 изображения)\n",
|
||||
"В наборе данных два класса: кошки и собаки\n",
|
||||
"\n",
|
||||
"Ссылка: https://www.kaggle.com/datasets/bhavikjikadara/dog-and-cat-classification-dataset"
|
||||
]
|
||||
@ -83,19 +64,7 @@
|
||||
"id": "85652835",
|
||||
"metadata": {},
|
||||
"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",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Архитектура AlexNet\n",
|
||||
"\n",
|
||||
"Модель AlexNet описана в лекции про глубокое обучение"
|
||||
"### Архитектура AlexNet"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -628,9 +595,7 @@
|
||||
"id": "a831795e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Оценка качества модели\n",
|
||||
"\n",
|
||||
"Качество модели - 88.2 %.#### Оценка качества модели"
|
||||
"#### Оценка качества модели"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -661,16 +626,6 @@
|
||||
"alexnet_model.evaluate(valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "7c1b7fd8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Пример использования обученной модели\n",
|
||||
"\n",
|
||||
"Для примера используются случайные изображения из сети Интернет"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
|
@ -5,26 +5,7 @@
|
||||
"id": "7915f17e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras\n",
|
||||
"\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"
|
||||
"### Инициализация Keras"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -59,7 +40,7 @@
|
||||
"\n",
|
||||
"В данном примере используется фрагмент набора данных Cats and Dogs Classification Dataset\n",
|
||||
"\n",
|
||||
"В наборе данных два класса (всего 24 998 изображений): кошки (12 499 изображения) и собаки (12 499 изображения)\n",
|
||||
"В наборе данных два класса: кошки и собаки\n",
|
||||
"\n",
|
||||
"Ссылка: https://www.kaggle.com/datasets/bhavikjikadara/dog-and-cat-classification-dataset"
|
||||
]
|
||||
@ -83,19 +64,7 @@
|
||||
"id": "85652835",
|
||||
"metadata": {},
|
||||
"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",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Загрузка предобученной модели VGG19:\n",
|
||||
"- Загрузка весов, полученных при обучении модели на наборе данных ImageNet\n",
|
||||
"- Отключение полносвязанных слоев для адаптации к новой задаче\n",
|
||||
"- Модель будет работать с изображениями 224 на 224 пиксела и RGB пространством"
|
||||
"Загрузка предобученной модели и отключение обучения для ее слоев"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -308,9 +274,7 @@
|
||||
"id": "49fceead",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Обучение глубокой модели\n",
|
||||
"\n",
|
||||
"Обучение остановлено после второго шага, так как качество модели приемлемое"
|
||||
"#### Обучение глубокой модели"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -394,9 +358,7 @@
|
||||
"id": "a831795e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Оценка качества модели\n",
|
||||
"\n",
|
||||
"Качество модели - 96.3 %."
|
||||
"#### Оценка качества модели"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -427,16 +389,6 @@
|
||||
"tl_model.evaluate(valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "9d0106c8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Пример использования обученной модели\n",
|
||||
"\n",
|
||||
"Для примера используются случайные изображения из сети Интернет"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
|
@ -1,21 +1,5 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d5b48413",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Пример предобработки и векторизации текстовых данных с помощью word2vec"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "1ce7f779",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация spacy и загрузка модели для русского языка"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
@ -28,14 +12,6 @@
|
||||
"sp = spacy.load(\"ru_core_news_lg\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e0445088",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Загрузка содержимого текстовых документов"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
@ -244,21 +220,6 @@
|
||||
"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",
|
||||
"execution_count": 4,
|
||||
@ -738,21 +699,6 @@
|
||||
"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",
|
||||
"execution_count": 5,
|
||||
@ -774,16 +720,6 @@
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ef97fa8a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Вывод уникальных идентификаторов для каждого слова\n",
|
||||
"\n",
|
||||
"Слова в пространстве хранятся в виде числового идентификатора для сокращения потребления памяти"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
@ -1805,14 +1741,6 @@
|
||||
"word2vec.wv.key_to_index"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "63be2cce",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Вывод трех наиболее похожих по смыслу слова для слова 1С"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
@ -1836,14 +1764,6 @@
|
||||
"word2vec.wv.most_similar(\"1с\", topn=3)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b1c06780",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Координаты слова 1С в 64-мерном пространстве"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
@ -1881,14 +1801,6 @@
|
||||
"word2vec.wv[\"1с\"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "98434d1e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Поиск лишнего по смыслу слова (самое отдаленное по смыслу слово)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
@ -1910,14 +1822,6 @@
|
||||
"word2vec.wv.doesnt_match(\"java php 1с oracle заказчик\".split())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "88684648",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Смысловое расстояние между словами (расстояние в пространстве)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
@ -1960,14 +1864,6 @@
|
||||
"word2vec.wv.similarity(\"java\", \"1с\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "98c93159",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Векторная арифметика: 1c - бухгалтерия + машина ="
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
@ -1998,14 +1894,6 @@
|
||||
"word2vec.wv.most_similar(positive=[\"1с\", \"машина\"], negative=[\"бухгалтерия\"])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "86ab3f05",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Векторная арифметика: субд - база + язык ="
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
@ -2036,14 +1924,6 @@
|
||||
"word2vec.wv.most_similar(positive=[\"субд\", \"язык\"], negative=[\"база\"])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a293bb05",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Векторная арифметика: java - машина + бухгалтерия ="
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
@ -2074,14 +1954,6 @@
|
||||
"word2vec.wv.most_similar(positive=[\"java\", \"бухгалтерия\"], negative=[\"машина\"])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b70332a5",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Векторная арифметика: 866 - мгц + мбайт ="
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
@ -2112,14 +1984,6 @@
|
||||
"word2vec.wv.most_similar(positive=[\"866\", \"мбайт\"], negative=[\"мгц\"])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "4f41fc6e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Векторная арифметика: 866 - процессор + память ="
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
@ -2150,14 +2014,6 @@
|
||||
"word2vec.wv.most_similar(positive=[\"866\", \"память\"], negative=[\"процессор\"])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a0414122",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Понижение размерности векторного пространства с 64 до 2 измерений"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
@ -2295,16 +2151,6 @@
|
||||
"coords_df"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "52e7a09b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Визуализация векторного пространства\n",
|
||||
"\n",
|
||||
"Диаграмма интерактивная и позволяет изменять масштаб и перемещаться"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
|
@ -1,13 +1,5 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0fd64751",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
@ -31,24 +23,6 @@
|
||||
"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",
|
||||
"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)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"execution_count": 14,
|
||||
@ -1113,16 +1070,6 @@
|
||||
"index_word"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a04781ef",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Вывод первого отзыва из тренировочной выборки\n",
|
||||
"\n",
|
||||
"Отзывы содержат только идентификаторы для экономии памяти"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
@ -1361,14 +1308,6 @@
|
||||
"X_train[0]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d0eca5f5",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Можно заменить идентификаторы на реальные слова с учетом предобработки"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
@ -1390,14 +1329,6 @@
|
||||
"\" \".join(index_word[id] for id in X_train[0])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ab903f3e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Можно вывести изначальный отзыв (если выключить удаление редких слов и стоп-слов)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
@ -1420,16 +1351,6 @@
|
||||
"\" \".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",
|
||||
"execution_count": 18,
|
||||
@ -1443,16 +1364,6 @@
|
||||
"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",
|
||||
"execution_count": 19,
|
||||
@ -1564,18 +1475,6 @@
|
||||
"simple_model.summary()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0ff9c40a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Обучение модели\n",
|
||||
"\n",
|
||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
||||
"\n",
|
||||
"В дальнейшем веса можно загрузить"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
@ -1626,16 +1525,6 @@
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3c495301",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
||||
"\n",
|
||||
"Качество модели - 84.6 %."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 21,
|
||||
@ -1665,14 +1554,6 @@
|
||||
"simple_model.evaluate(X_valid, y_valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b1157104",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
|
@ -1,13 +1,5 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "624cd060",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
@ -51,16 +43,6 @@
|
||||
"(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",
|
||||
"execution_count": 3,
|
||||
@ -74,16 +56,6 @@
|
||||
"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",
|
||||
"execution_count": 4,
|
||||
@ -216,18 +188,6 @@
|
||||
"conv_model.summary()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ddab8c65",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Обучение модели\n",
|
||||
"\n",
|
||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
||||
"\n",
|
||||
"В дальнейшем веса можно загрузить"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
@ -278,16 +238,6 @@
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e5e1e1b7",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
||||
"\n",
|
||||
"Качество модели - 89.1 %."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
@ -317,14 +267,6 @@
|
||||
"conv_model.evaluate(X_valid, y_valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ee31cb44",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
|
@ -1,15 +1,5 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e13159d6",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras\n",
|
||||
"\n",
|
||||
"torch был заменен на jax, так как с torch рекуррентные сети не работали"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
@ -33,29 +23,6 @@
|
||||
"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",
|
||||
"execution_count": 2,
|
||||
@ -76,16 +43,6 @@
|
||||
"(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",
|
||||
"execution_count": 3,
|
||||
@ -99,17 +56,6 @@
|
||||
"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",
|
||||
"execution_count": 4,
|
||||
@ -218,18 +164,6 @@
|
||||
"rnn_model.summary()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "23900b11",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Обучение модели\n",
|
||||
"\n",
|
||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
||||
"\n",
|
||||
"В дальнейшем веса можно загрузить"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
@ -304,16 +238,6 @@
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ccf878d3",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
||||
"\n",
|
||||
"Качество модели - 73.6 %."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
@ -343,14 +267,6 @@
|
||||
"rnn_model.evaluate(X_valid, y_valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e05b98c0",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
|
@ -1,15 +1,5 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "67f49f36",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras\n",
|
||||
"\n",
|
||||
"torch был заменен на jax, так как с torch рекуррентные сети не работали"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
@ -33,29 +23,6 @@
|
||||
"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",
|
||||
"execution_count": 2,
|
||||
@ -76,16 +43,6 @@
|
||||
"(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",
|
||||
"execution_count": 3,
|
||||
@ -99,17 +56,6 @@
|
||||
"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",
|
||||
"execution_count": 4,
|
||||
@ -218,18 +164,6 @@
|
||||
"lstm_model.summary()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "05334f15",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Обучение модели\n",
|
||||
"\n",
|
||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
||||
"\n",
|
||||
"В дальнейшем веса можно загрузить"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
@ -280,16 +214,6 @@
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e3b39f42",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
||||
"\n",
|
||||
"Качество модели - 85.3 %."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
@ -319,14 +243,6 @@
|
||||
"lstm_model.evaluate(X_valid, y_valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d1aa3151",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
|
@ -1,15 +1,5 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "c2308ffe",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Инициализация Keras\n",
|
||||
"\n",
|
||||
"torch был заменен на jax, так как с torch рекуррентные сети не работали"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
@ -33,29 +23,6 @@
|
||||
"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",
|
||||
"execution_count": 2,
|
||||
@ -76,16 +43,6 @@
|
||||
"(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",
|
||||
"execution_count": 3,
|
||||
@ -99,17 +56,6 @@
|
||||
"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",
|
||||
"execution_count": 4,
|
||||
@ -218,18 +164,6 @@
|
||||
"blstm_model.summary()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3a826105",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Обучение модели\n",
|
||||
"\n",
|
||||
"Веса модели сохраняются в каталог tmp после каждой эпохи обучения с помощью callback-параметра\n",
|
||||
"\n",
|
||||
"В дальнейшем веса можно загрузить"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
@ -284,16 +218,6 @@
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a47a8ff6",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Загрузка лучшей модели и оценка ее качества\n",
|
||||
"\n",
|
||||
"Качество модели - 84.6 %."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
@ -323,14 +247,6 @@
|
||||
"blstm_model.evaluate(X_valid, y_valid)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "7001f712",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"#### Визуализация распределения вероятностей результатов модели на валидационной выборке"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user