diff --git a/.DS_Store b/.DS_Store index 8184b07..1382c6b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/labworks/.DS_Store b/labworks/.DS_Store index 30a9126..83b16b5 100644 Binary files a/labworks/.DS_Store and b/labworks/.DS_Store differ 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) Сравнение результатов обучения