From 6c5da44cc30a84b963d7b9b9a48f6a1fbd6dd989 Mon Sep 17 00:00:00 2001 From: NovikovVN Date: Sat, 28 Feb 2026 14:09:46 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?lab3=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab3/3.1_autoencoder.ipynb | 393 ++++++++----------------------------- lab3/3.2_rbf.ipynb | 20 +- lab3/3.3_image.ipynb | 4 +- 3 files changed, 101 insertions(+), 316 deletions(-) diff --git a/lab3/3.1_autoencoder.ipynb b/lab3/3.1_autoencoder.ipynb index be0571c..1141690 100644 --- a/lab3/3.1_autoencoder.ipynb +++ b/lab3/3.1_autoencoder.ipynb @@ -12,9 +12,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "15BpjnZQzAUG" - }, + "metadata": {}, "source": [ "> Цель работы: знакомство с применением многослойного персептрона для решения задач сжатия данных, прогнозирования временных рядов и распознавания образов.\n", ">\n", @@ -23,15 +21,15 @@ "> а) для исходных данных из 5-ти классов; \n", "> б) для исходных данных из 4-х классов. \n", "> Провести визуализацию данных в скрытом слое каждой сети на плоскость и в 3-х мерное пространство. Проанализировать полученные результаты. Выбрать и сохранить автоассоциативные ИНС, обеспечивающие наилучшее сжатие исходных данных. \n", - "> 2. … \n", + "> 2. Исследовать возможности ИНС по прогнозированию поведения нелинейных динамических систем (построение странного аттрактора) на примере отображения Хенона. Аттрактор Хенона может быть получен из уравнений $x_{n+1} = 1 - \\alpha x_{n}^2 + y_{n}$ и $y_{n+1} = \\beta x_{n}$, где $α = 1.4$, $β = 0.3$.\n", + "> Для прогнозирования предлагается использовать многослойный персептрон и сеть с радиально-базисными функциями.\n", + "> Постройте также прогноз курса доллара на один день вперед. В качестве исходных данных загрузить актуальные данные с сайта центрального банка России (http://www.cbr.ru).\n", "> 3. Решить задачу распознавания 9-ти изображений самолетов. Исходные данные (файлы avia1.bmp, …, avia9.bmp) необходимо предварительно преобразовать в набор векторов со значениями признаков 0 или 1. Обученная нейронная сеть должна правильно определять модель самолета и его класс (истребитель/бомбардировщик). Принадлежность модели к определенному классу выбирается студентом самостоятельно." ] }, { "cell_type": "markdown", - "metadata": { - "id": "F1-sSuk2zAUI" - }, + "metadata": {}, "source": [ "Импорт библиотек:" ] @@ -46,11 +44,11 @@ "source": [ "import numpy as np\n", "import pandas as pd\n", + "import seaborn as sns\n", "import torch\n", "import matplotlib.pyplot as plt\n", "from IPython.display import clear_output\n", "from mpl_toolkits.mplot3d import Axes3D\n", - "from sklearn.model_selection import train_test_split\n", "\n", "from torch import nn\n", "\n", @@ -59,9 +57,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "GtZJ1mGmzAUL" - }, + "metadata": {}, "source": [ "### Содержание: \n", "[1. Подготовка данных](#p_1) \n", @@ -71,18 +67,14 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "HZNHPPKUzAUM" - }, + "metadata": {}, "source": [ "## 1. Подготовка данных" ] }, { "cell_type": "markdown", - "metadata": { - "id": "h2JqhwwrzAUN" - }, + "metadata": {}, "source": [ "Загрузим в датафрейм `data` данные о сорока образцах минеральной воды, хранящиеся в файле `min_water.txt`." ] @@ -96,7 +88,7 @@ "height": 256 }, "id": "PkNWYbQCpsl_", - "outputId": "1de6457f-9cc1-42a1-b4f1-2c13c5b66100" + "outputId": "ee2dd8c3-2d7d-4962-bc40-a5cc2dded5db" }, "outputs": [], "source": [ @@ -106,9 +98,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "YjqpAWl9zAUR" - }, + "metadata": {}, "source": [ "Вынесем в отдельные переменные:\n", " - `y_binary` — выходной признак для задачи бинарной классификации (первый столбец датафрейма);\n", @@ -132,9 +122,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "rpgOkJkPzAUT" - }, + "metadata": {}, "source": [ "Выпишите в список `features` отобранные в прошлой лабораторной работе признаки (формат: `features = ['VAR1', 'VAR2']`):" ] @@ -142,9 +130,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "R0bIf4PUzAUT" - }, + "metadata": {}, "outputs": [], "source": [ "features = # Ваш код здесь" @@ -152,9 +138,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "ddwgNPoyzAUV" - }, + "metadata": {}, "source": [ "Датафрейм с отобранными входными признаками `X_data_filtered`:" ] @@ -168,7 +152,7 @@ "height": 206 }, "id": "d6eTUCk2Cjdc", - "outputId": "656c9a35-26f6-4425-b35e-ca06930abc82" + "outputId": "d89643dd-a410-42b2-9b91-c4534966fd1d" }, "outputs": [], "source": [ @@ -180,7 +164,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "C помощью функции `train_test_split` разбейте данные (`X_data_filtered`, `y_multiclass`) на обучающую (`X_multiclass_train`, `y_multiclass_train`), валидационную (`X_multiclass_valid`, `y_multiclass_valid`) и тестовую выборки (`X_multiclass_test`, `y_multiclass_test`) с сохранением соотншений классов (сортов минеральной воды):" + "Произведите нормализацию или стандартизацию (на выбор) отобранных входных данных `X_data_filtered`. Результат сохраните в переменную `X_data_preprocessed`, которую затем представьте в виде тензора `X_data_tensor`:" ] }, { @@ -191,37 +175,19 @@ }, "outputs": [], "source": [ - "X_multiclass_train, X_multiclass_test, y_multiclass_train, y_multiclass_test = # Ваш код здесь\n", + "# Ваш код здесь\n", "\n", - "X_multiclass_train, X_multiclass_valid, y_multiclass_train, y_multiclass_valid = # Ваш код здесь" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "LAOh4V56zAUV" - }, - "source": [ - "Произведите нормализацию или стандартизацию (на выбор) входных данных. Результат сохраните в переменные (`X_multiclass_train`, `X_multiclass_valid`, `X_multiclass_test`), которую затем представьте в виде тензоров:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X_means = # Ваш код здесь\n", - "X_stds = # Ваш код здесь\n", - "\n", - "X_multiclass_train = # Ваш код здесь\n", - "X_multiclass_valid = # Ваш код здесь\n", - "X_multiclass_test = # Ваш код здесь" + "X_data_preprocessed = # Ваш код здесь\n", + "\n", + "X_data_tensor = # Ваш код здесь" ] }, { "cell_type": "markdown", "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, "id": "AtGktiZmJiUV", "outputId": "f9edb4f0-c5ab-4a62-af28-6552c981512f" }, @@ -247,9 +213,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "asRgUuyNzAUY" - }, + "metadata": {}, "source": [ "Допишите класс `Autoencoder` структурами энкодера и декодера на основе полносвязных слоёв `nn.Linear`. В качестве функций активации используйте `nn.ReLU()`. При этом на выходе энкодера функцию активации можно не применять — это позволит сохранить отрицательные значения в кодированном представлении." ] @@ -257,9 +221,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "F297Z81wzAUY" - }, + "metadata": {}, "outputs": [], "source": [ "class Autoencoder(nn.Module):\n", @@ -280,9 +242,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "R5sVUOy7zAUZ" - }, + "metadata": {}, "source": [ "Создайте экземпляр модели с двумя нейронами в «узком горле»:" ] @@ -290,9 +250,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "MlSSzk2yzAUa" - }, + "metadata": {}, "outputs": [], "source": [ "model_2 = Autoencoder(# Ващ код здесь\n", @@ -302,6 +260,9 @@ { "cell_type": "markdown", "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, "id": "tGS2_TqjK_SI", "outputId": "a1a63c33-5dd5-461e-8d20-97fc34455f21" }, @@ -317,18 +278,16 @@ "base_uri": "https://localhost:8080/" }, "id": "Y3GS-3AaKYt7", - "outputId": "81ecb257-7d72-443e-aa9e-256271a17a6e" + "outputId": "981a4cd8-3b19-4bf6-ac07-ddd13e3df131" }, "outputs": [], "source": [ - "model_2(X_multiclass_train[:3])" + "model_2(X_data_tensor[:3])" ] }, { "cell_type": "markdown", - "metadata": { - "id": "8hJk8GWIzAUb" - }, + "metadata": {}, "source": [ "Удостоверимся, что размерность её выхода совпадает с размерностью её входа:" ] @@ -336,19 +295,15 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "pDmdGMRZzAUc" - }, + "metadata": {}, "outputs": [], "source": [ - "assert X_multiclass_train[:3].shape == model_2(X_multiclass_train[:3]).shape" + "assert X_data_tensor[:3].shape == model_2(X_data_tensor[:3]).shape" ] }, { "cell_type": "markdown", - "metadata": { - "id": "IjoYYn-ozAUc" - }, + "metadata": {}, "source": [ "Проверим, как модель обучается. Зададим оптимизатор и среднеквадратическую функцию потерь:" ] @@ -367,9 +322,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "HqcQqxN7zAUd" - }, + "metadata": {}, "source": [ "Рассчитаем значение функции потерь:" ] @@ -382,21 +335,19 @@ "base_uri": "https://localhost:8080/" }, "id": "5kKYW89_KY8j", - "outputId": "a5ece716-5c89-4553-c78c-1e5c7e20eedf" + "outputId": "94e90485-ca86-4204-e61d-75d247a87fc4" }, "outputs": [], "source": [ - "decoded = model_2(X_multiclass_train)\n", + "decoded = model_2(X_data_tensor)\n", "\n", - "loss = criterion(decoded, X_multiclass_train)\n", + "loss = criterion(decoded, X_data_tensor)\n", "loss" ] }, { "cell_type": "markdown", - "metadata": { - "id": "JVplv7O8zAUd" - }, + "metadata": {}, "source": [ "Выполните несколько раз эту и предыдущую ячейку, чтобы убедиться в уменьшении ошибки:" ] @@ -416,9 +367,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "iXqI-DurzAUe" - }, + "metadata": {}, "source": [ "Задайте параметры для обучения автоассоциативной сети с двумя нейронами в «узком горле»:" ] @@ -426,9 +375,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "5s4GjW_PzAUe" - }, + "metadata": {}, "outputs": [], "source": [ "torch.manual_seed(seed=42)\n", @@ -446,9 +393,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "SN8PZ41vzAUp" - }, + "metadata": {}, "source": [ "**Обучение нейронной сети:**" ] @@ -459,21 +404,16 @@ "metadata": {}, "outputs": [], "source": [ - "loss_train_history, loss_valid_history = [], []\n", + "loss_history = []\n", "\n", "for epoch in range(epochs):\n", " # Ваш код здесь\n", "\n", - " # Отключаем градиенты для этапа валидации\n", - " with torch.no_grad():\n", - " # Ваш код здесь\n", - "\n", " if (epoch + 1) % 5 == 0:\n", "\n", " clear_output(True)\n", - " plt.plot(range(1, epoch+2), loss_train_history, label='Train', color='green')\n", - " plt.plot(range(1, epoch+2), loss_valid_history, label='Valid', color='red')\n", - " plt.title(f'Epoch: {epoch + 1}, Loss Train: {loss_train_history[-1]:.6f}, Loss Valid: {loss_valid_history[-1]:.6f}')\n", + " plt.plot(range(1, epoch+2), loss_history, label='Loss')\n", + " plt.title(f'Epoch: {epoch + 1}, Loss: {loss_history[-1]:.6f}')\n", " plt.grid(True, alpha=0.3)\n", " plt.legend(loc='best')\n", " plt.show()" @@ -482,54 +422,6 @@ { "cell_type": "markdown", "metadata": {}, - "source": [ - "Проверим качество обученной сети на тестовой выборке:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "t-Xkwg4h3gyS", - "outputId": "ddfc13ae-f942-4328-9036-92b318c726bc" - }, - "outputs": [], - "source": [ - "with torch.no_grad():\n", - " decoded_test = model_2(X_multiclass_test)\n", - " loss_test = criterion(decoded_test, X_multiclass_test)\n", - "\n", - "print(f'Loss Test: {loss_test.item():.6f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Далее необходимо через обученную сети пропустить все имеющиеся входные данные. Здесь можно сконкатенировать обучающую, валидационную и тестовую выборки, но можно и заново стандартизировать исходные данные `X_data_filtered` с помощью переменных `X_means` и `X_stds`, которые обязательно должны быть ранее рассчитаны на обучающей выборке `X_multiclass_train` (аналогично будет и для нормировки данных). Результат будет прелставлен в виде тензора.\n", - "\n", - "Такой вариант сохранит исходный порядок записей в данных и позволит нам использовать исходный вектор `y_multiclass` для разметки классов ниже." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "0RbKOwMeZUcn" - }, - "outputs": [], - "source": [ - "X_data_tensor = torch.tensor(((X_data_filtered - X_means) / X_stds).values).float()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TrWOUf0vzAUq" - }, "source": [ "После обучения сети получим двумерные данные с выхода энкодера:" ] @@ -542,7 +434,7 @@ "base_uri": "https://localhost:8080/" }, "id": "HFcSAdGoOaog", - "outputId": "1233f17c-2188-402e-d1dc-697dc6c0bfb4" + "outputId": "36330737-7606-4a6a-e532-6bf372deb34d" }, "outputs": [], "source": [ @@ -552,9 +444,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "GjtM4NXLzAUr" - }, + "metadata": {}, "source": [ "Построим двумерную диаграмму рассеяния и отметим классы с помощью `y_multiclass`:" ] @@ -568,7 +458,7 @@ "height": 430 }, "id": "KkToPCInQQ1J", - "outputId": "8469b911-292a-4016-fbd3-38f92997adad" + "outputId": "244bae8a-94a9-4817-a564-69c630efea98" }, "outputs": [], "source": [ @@ -584,9 +474,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "t0EmzLHXzAUs" - }, + "metadata": {}, "source": [ "По аналогии обучите автоассоциативную сеть с тремя нейронами в «узком горле»:" ] @@ -594,9 +482,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "WasLielLzAUt" - }, + "metadata": {}, "outputs": [], "source": [ "torch.manual_seed(seed=42)\n", @@ -609,9 +495,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "cFxc9xD-zAUt" - }, + "metadata": {}, "outputs": [], "source": [ "# Ваш код здесь" @@ -619,19 +503,15 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "18f786y5zAUv" - }, + "metadata": {}, "source": [ - "После обучения сети получите трёхмерные данные с выхода энкодера (снова по всем данным `X_data_tensor`, которые уже были подготовлены выше):" + "После обучения сети получите трёхмерные данные с выхода энкодера:" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "PLjKuu-szAUw" - }, + "metadata": {}, "outputs": [], "source": [ "encoded_3d = # Ваш код здесь" @@ -639,9 +519,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "BYn45sTnzAUx" - }, + "metadata": {}, "source": [ "Построим трёхмерную диаграмму рассеяния:" ] @@ -655,7 +533,7 @@ "height": 653 }, "id": "RpqVg5EeT72I", - "outputId": "7b9aac3c-68d5-44d7-db56-8f7a53e3aa37" + "outputId": "2f5e070d-aa49-4eab-cd8e-277bd3a2c4b5" }, "outputs": [], "source": [ @@ -685,9 +563,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "NNWL9ZakzAUy" - }, + "metadata": {}, "source": [ "Сохраним в бинарные файлы `.npy` выходы энкодеров обеих моделей — для следующей лабораторной работы:" ] @@ -695,9 +571,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "p2Zx-Jz4zAUz" - }, + "metadata": {}, "outputs": [], "source": [ "np.save('encoded_2d.npy', encoded_2d)\n", @@ -706,18 +580,14 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "K-pYtaxBzAUz" - }, + "metadata": {}, "source": [ "## 3. Автоассоциативная нейронная сеть на неполных данных" ] }, { "cell_type": "markdown", - "metadata": { - "id": "J3RSV5WDzAU0" - }, + "metadata": {}, "source": [ "Выберите класс, который нужно исключить:" ] @@ -725,9 +595,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "_UuEf5TRzAU0" - }, + "metadata": {}, "outputs": [], "source": [ "label_to_exclude = # Ваш код здесь" @@ -735,9 +603,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "MmlBKShgzAU1" - }, + "metadata": {}, "source": [ "Создадим маску для исключения данных этого класса:" ] @@ -755,9 +621,7 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "SA3A39ARzAU1" - }, + "metadata": {}, "source": [ "Данные исключены:" ] @@ -766,60 +630,22 @@ "cell_type": "code", "execution_count": null, "metadata": { - "id": "I7sTKdWgQRWQ" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "I7sTKdWgQRWQ", + "outputId": "95d2a292-7e2f-401e-e473-7d5f09b0d7fb" }, "outputs": [], "source": [ - "X_data_include = X_data_filtered.loc[mask_to_exclude, :]\n", - "y_include = y_multiclass[mask_to_exclude]" + "X_data_tensor[mask_to_exclude].shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "По аналогии с помощью функции `train_test_split` разбейте данные (`X_data_include`, `y_include`) на обучающую (`X_include_train`, `y_include_train`), валидационную (`X_include_valid`, `y_include_valid`) и тестовую выборки (`X_include_test`, `y_include_test`) с сохранением соотншений классов:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X_include_train, X_include_test, y_include_train, y_include_test = # Ваш код здесь\n", - "\n", - "X_include_train, X_include_valid, y_include_train, y_include_valid = # Ваш код здесь" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Обратите внимание, что `X_means` и `X_stds` перерасчитываются уже на другой по составу обучающей выборке." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "X_means = # Ваш код здесь\n", - "X_stds = # Ваш код здесь\n", - "\n", - "X_include_train = # Ваш код здесь\n", - "X_include_valid = # Ваш код здесь\n", - "X_include_test = # Ваш код здесь" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "V2MUFTkczAU2" - }, - "source": [ - "По аналогии с предыдущим пунктом реализуйте обучение автоассоциативных сетей с двумя и тремя нейронами в «узком горле».\n", + "По аналогии с предыдущим пунктом реализуйте обучение автоассоциативных сетей с двумя и тремя нейронами в «узком горле» на неполных данных (т.е. на каждой эпохе вместо полных данных `X_data_tensor` на модель нужно подавать неполные данные `X_data_tensor[mask_to_exclude]`).\n", "\n", "Результаты выходов энкодеров в обоих случаях также сохраните в отдельные бинарные файлы." ] @@ -827,9 +653,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "qnSnyqNGzAU2" - }, + "metadata": {}, "outputs": [], "source": [ "# Ваш код здесь" @@ -838,41 +662,12 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "id": "MMW6h5P1zAU3" - }, + "metadata": {}, "outputs": [], "source": [ "# Ваш код здесь" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Обратите внимание, что тензор `X_data_tensor` снова получен из исходных данных `X_data_filtered`, но уже с пересчитанными `X_means` и `X_stds` (без одного класса):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "1FjpRmrCaOp4" - }, - "outputs": [], - "source": [ - "X_data_tensor = torch.tensor(((X_data_filtered - X_means) / X_stds).values).float()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "encoded_2d_include = # Ваш код здесь" - ] - }, { "cell_type": "code", "execution_count": null, @@ -884,39 +679,9 @@ "# Ваш код здесь" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Ваш код здесь" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "encoded_3d_include = # Ваш код здесь" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "np.save('encoded_2d_include.npy', encoded_2d_include)\n", - "np.save('encoded_3d_include.npy', encoded_3d_include)" - ] - }, { "cell_type": "markdown", - "metadata": { - "id": "-BXig37czAU6" - }, + "metadata": {}, "source": [ "### Литература:\n", "1. Бородкин А.А., Елисеев В.Л. Основы и применение искусственных нейронных сетей. Сборник лабораторных работ: методическое пособие. – М.: Издательский дом МЭИ, 2017.\n", @@ -926,10 +691,10 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "-KIqZEHczAU6" - }, - "source": [] + "metadata": {}, + "source": [ + " " + ] } ], "metadata": { diff --git a/lab3/3.2_rbf.ipynb b/lab3/3.2_rbf.ipynb index 0a14624..6fc8ef4 100644 --- a/lab3/3.2_rbf.ipynb +++ b/lab3/3.2_rbf.ipynb @@ -867,7 +867,7 @@ "source": [ "По аналогии с отображением Хенона самостоятельно реализуйте прогнозирование курса доллара.\n", "\n", - "Для этого скачайте актуальную информацию по курсу с сайта http://www.cbr.ru в формате '.xlsx'.\n", + "Для этого скачайте актуальную информацию по курсу с сайта http://www.cbr.ru в формате `.xlsx`.\n", "\n", "Введите в виже строки имя скачанного файла с расширением:" ] @@ -924,6 +924,24 @@ "# Ваш код здесь" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Ваш код здесь" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Ваш код здесь" + ] + }, { "cell_type": "markdown", "metadata": { diff --git a/lab3/3.3_image.ipynb b/lab3/3.3_image.ipynb index 3692cdc..42d93e6 100644 --- a/lab3/3.3_image.ipynb +++ b/lab3/3.3_image.ipynb @@ -19,7 +19,9 @@ "> а) для исходных данных из 5-ти классов; \n", "> б) для исходных данных из 4-х классов. \n", "> Провести визуализацию данных в скрытом слое каждой сети на плоскость и в 3-х мерное пространство. Проанализировать полученные результаты. Выбрать и сохранить автоассоциативные ИНС, обеспечивающие наилучшее сжатие исходных данных. \n", - "> 2. … \n", + "> 2. Исследовать возможности ИНС по прогнозированию поведения нелинейных динамических систем (построение странного аттрактора) на примере отображения Хенона. Аттрактор Хенона может быть получен из уравнений $x_{n+1} = 1 - \\alpha x_{n}^2 + y_{n}$ и $y_{n+1} = \\beta x_{n}$, где $α = 1.4$, $β = 0.3$.\n", + "> Для прогнозирования предлагается использовать многослойный персептрон и сеть с радиально-базисными функциями.\n", + "> Постройте также прогноз курса доллара на один день вперед. В качестве исходных данных загрузить актуальные данные с сайта центрального банка России (http://www.cbr.ru).\n", "> 3. Решить задачу распознавания 9-ти изображений самолетов. Исходные данные (файлы avia1.bmp, …, avia9.bmp) необходимо предварительно преобразовать в набор векторов со значениями признаков 0 или 1. Обученная нейронная сеть должна правильно определять модель самолета и его класс (истребитель/бомбардировщик). Принадлежность модели к определенному классу выбирается студентом самостоятельно." ] },