From 5ef722a5f7a9aad0a5f291a37e9d3484a0eb3fcc Mon Sep 17 00:00:00 2001 From: Troyanov Daniil Date: Thu, 13 Nov 2025 11:04:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes labworks/.DS_Store | Bin 6148 -> 6148 bytes labworks/LW2/report_lr2_Troyanov_Chernov.md | 61 +++++++++++++++++--- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.DS_Store b/.DS_Store index 8184b071a711bdfa2d3c6bbe11c52c891380fe4f..1382c6bef9c3141da3f52353800983f5370bff48 100644 GIT binary patch delta 123 zcmZoMXffEJ$`pT1Sd)Q)frUYjA)O(Up(Hoo#U&{xKM5$tvGmZVACHrcJEF>`z~#@L r_=q82kYN~{oS$0&)Wg7V*MMR21tyWnGnn|8ZY%&Y#WwF_auWpryyPW8 delta 123 zcmZoMXffEJ$`pU~%>xDo1{MZAhIEEZhLYTT7nh`*{3M_l$Hh-m9$ig3?uaU%f>*vE m!!S5GKeqs=hk@bF0fxyJm_#PeVB%vs69Z(5ZQjS^CJF#q-X@j+ diff --git a/labworks/.DS_Store b/labworks/.DS_Store index 30a912689ed9deffce27921b9957c1d53ba830c6..83b16b53a951f3c737c7f67bc499f1b12f524818 100644 GIT binary patch delta 15 WcmZoMXffC@g^6j`uFcb!@Ed`?h diff --git a/labworks/LW2/report_lr2_Troyanov_Chernov.md b/labworks/LW2/report_lr2_Troyanov_Chernov.md index 219cf98..d623af6 100644 --- a/labworks/LW2/report_lr2_Troyanov_Chernov.md +++ b/labworks/LW2/report_lr2_Troyanov_Chernov.md @@ -303,16 +303,40 @@ test_letter_normalized = scaler.transform(test_letter) Создан и обучен автокодировщик с подходящей для данных архитектурой на ненормализованных данных. Выбрано необходимое количество эпох обучения. ```python -# Обучение на ненормализованных данных -with patch('builtins.input', side_effect=['1', '11', '48 36 24 16 8 4 8 16 24 36 48']): +# Обучение автокодировщика для Letter на НЕнормализованных данных +# Входной и выходной слои создаются автоматически по размеру данных (32 признака) +# Мы задаем только скрытые слои +# Полная архитектура: 32(вход) -> 100 -> 68 -> 48 -> 32 -> 24 -> 16 -> 8 -> 16 -> 24 -> 32 -> 48 -> 64 -> 100 -> 32(выход) +# 11 скрытых слоев: 100 64 48 32 24 16 8 16 24 32 48 64 100 + +import warnings +# Подавляем предупреждение о формате сохранения HDF5 +warnings.filterwarnings('ignore', category=UserWarning, module='absl') + +print('Обучение автокодировщика для данных Letter (НЕнормализованные данные)...') +print('Архитектура: 32(вход) -> 100 -> 68 -> 48 -> 32 -> 24 -> 16 -> 8 -> 16 -> 24 -> 32 -> 48 -> 64 -> 100 -> 32(выход)') + +# Автоматизируем ввод для выбора пользовательской архитектуры +with patch('builtins.input', side_effect=['1', '17', ' 100 86 72 64 48 32 24 16 8 16 24 32 48 64 72 86 100']): ae_letter_raw, IRE_letter_raw, IREth_letter_raw = lib.create_fit_save_ae( train_letter, 'out/Letter_AE_raw.h5', 'out/Letter_AE_raw_ire_th.txt', - 20000, # epochs - True, # verbose_show - 200, # patience + 100000, # epochs + False, # verbose_show + 10000, # patience + verbose_every_n_epochs=500 ) + +# Вычисление MSE из предсказания +X_pred_letter_raw = ae_letter_raw.predict(train_letter, verbose=0) +mse_letter_raw = np.mean((train_letter - X_pred_letter_raw) ** 2) + +print(f'\nОбучение завершено (НЕнормализованные данные)!') +print(f'MSE_stop (приблизительно): {mse_letter_raw:.6f}') +print(f'Порог IRE: {IREth_letter_raw:.6f}') +print(f'Количество скрытых слоев: 11') +print(f'Количество нейронов в скрытых слоях: 100 -> 68 -> 48 -> 32 -> 24 -> 16 -> 8 -> 16 -> 24 -> 32 -> 48 -> 64 -> 100') ``` Архитектура: 32 → 100 → 68 → 48 → 32 → 24 → 16 → 8 → 16 → 24 → 32 → 48 → 64 → 100 → 32 @@ -324,16 +348,35 @@ with patch('builtins.input', side_effect=['1', '11', '48 36 24 16 8 4 8 16 24 36 Создан и обучен автокодировщик с той же архитектурой на нормализованных данных для сравнения результатов. ```python -# Обучение на нормализованных данных -with patch('builtins.input', side_effect=['1', '11', '48 36 24 16 8 4 8 16 24 36 48']): +# Обучение автокодировщика для Letter на нормализованных данных +# Та же архитектура для сравнения: 32(вход) -> 100 -> 68 -> 48 -> 32 -> 24 -> 16 -> 8 -> 16 -> 24 -> 32 -> 48 -> 64 -> 100 -> 32(выход) +# 11 скрытых слоев: 100 86 72 64 48 32 24 16 8 16 24 32 48 64 72 86 100 + +print('Обучение автокодировщика для данных Letter (нормализованные данные)...') +print('Архитектура: 32(вход) -> 100 -> 68 -> 48 -> 32 -> 24 -> 16 -> 8 -> 16 -> 24 -> 32 -> 48 -> 64 -> 100 -> 32(выход)') + +# Автоматизируем ввод для выбора пользовательской архитектуры +with patch('builtins.input', side_effect=['1', '17', ' 100 86 72 64 48 32 24 16 8 16 24 32 48 64 72 86 100']): ae_letter_norm, IRE_letter_norm, IREth_letter_norm = lib.create_fit_save_ae( train_letter_normalized, 'out/Letter_AE_norm.h5', 'out/Letter_AE_norm_ire_th.txt', 20000, # epochs - True, # verbose_show - 200, # patience + True, # verbose_show + 200, # patience + verbose_every_n_epochs=500 ) + +# Вычисление MSE из предсказания +X_pred_letter_norm = ae_letter_norm.predict(train_letter_normalized, verbose=0) +mse_letter_norm = np.mean((train_letter_normalized - X_pred_letter_norm) ** 2) + +print(f'\nОбучение завершено (нормализованные данные)!') +print(f'MSE_stop (приблизительно): {mse_letter_norm:.6f}') +print(f'Порог IRE: {IREth_letter_norm:.6f}') +print(f'Количество скрытых слоев: 11') +print(f'Количество нейронов в скрытых слоях: 100 -> 68 -> 48 -> 32 -> 24 -> 16 -> 8 -> 16 -> 24 -> 32 -> 48 -> 64 -> 100') + ``` ### 7) Сравнение результатов обучения