Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. 3 НС

.docx
Скачиваний:
0
Добавлен:
02.06.2026
Размер:
697.25 Кб
Скачать

МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ

Институт системной и программной инженерии и информационных технологий (Институт СПИНТех)

Лабораторная работа № 3

Создание однонаправленной нейронной сети с помощью нейронно-стевого инструментария Python.

Выполнил:

Фамилия И.О. гр. ???-??

Проверил преподаватель:

проф., д.ф.-м. н. Рычагов М.Н.

Москва, 2026

Задание №1

Код:

import torch import torch.nn as nn import torch.optim as optim from model import SimpleNet from data import generate_data from draw import evaluate_model noise_levels = [0.01, 0.05, 0.1, 0.2] results = {} loss = 0 for nl in noise_levels: print(f"\nШум = {nl}") model = SimpleNet() criterion = nn.MSELoss() optimizer = optim.Adam(model.parameters(), lr=0.01) inputs, targets = generate_data(M=500, noise_level=nl) for epoch in range(1000): optimizer.zero_grad() loss = criterion(model(inputs), targets) loss.backward() optimizer.step() results[nl] = loss.item() print(f"Финальная ошибка: {loss.item():.6f}") filename = f"model_noise_{nl}.pth" torch.save(model.state_dict(), filename) test_inputs, test_targets = generate_data(100) evaluate_model(model, test_inputs, test_targets, title_prefix=f"Шум {nl}:") print("\nИтог:") for nl, loss in results.items(): print(f"Шум {nl}: ошибка {loss:.6f}")

Вывод:

Шум = 0.01

Финальная ошибка: 0.005523

Шум = 0.05

Финальная ошибка: 0.006677

Шум = 0.1

Финальная ошибка: 0.008732

Шум = 0.2

Финальная ошибка: 0.012819

Итог:

Шум 0.01: ошибка 0.005523

Шум 0.05: ошибка 0.006677

Шум 0.1: ошибка 0.008732

Шум 0.2: ошибка 0.012819

Рисунок 1. Результаты тестирования нейронной сети при уровне шума 0,01

Рисунок 2. Результаты тестирования нейронной сети при уровне шума 0,05

Рисунок 3. Результаты тестирования нейронной сети при уровне шума 0,1

Рисунок 4. Результаты тестирования нейронной сети при уровне шума 0,2

Комментарий:

В ходе эксперимента было установлено, что с увеличением уровня шума во входных данных возрастает ошибка обучения нейронной сети.

При малых значениях шума (0.01) сеть демонстрирует высокую точность, так как исходная функциональная зависимость практически не искажена.

При увеличении шума до 0.2 входные данные искажаются значительнее, что затрудняет восстановление параметров функции, вследствие чего ошибка возрастает.

Таким образом, наличие шума ухудшает качество обучения и точность работы нейронной сети.

Следует отметить, что коэффициент корреляции R не всегда напрямую отражает точность модели.

Несмотря на рост ошибки при увеличении шума, значение R может оставаться высоким, так как сохраняется общая линейная зависимость между предсказанными и эталонными значениями.

Задание №2

Код:

import torch import torch.nn as nn import torch.optim as optim from model import SimpleNet from data import generate_data from draw import evaluate_model model = SimpleNet() criterion = nn.MSELoss() optimizer = optim.Adam(model.parameters(), lr=0.01) P_rand = torch.rand(100, 21) T_rand = torch.rand(100, 3) loss = 0 for epoch in range(1000): optimizer.zero_grad() loss = criterion(model(P_rand), T_rand) loss.backward() optimizer.step() if epoch % 200 == 0: print(f"Epoch {epoch}, Loss: {loss.item():.6f}") print(f"\nФинальная ошибка: {loss.item():.6f}") torch.save(model.state_dict(), "model_random.pth") test_inputs, test_targets = generate_data(100) evaluate_model(model, test_inputs, test_targets, title_prefix="Случайные данные:")

Вывод:

Epoch 0, Loss: 0.631158

Epoch 200, Loss: 0.063013

Epoch 400, Loss: 0.058794

Epoch 600, Loss: 0.054968

Epoch 800, Loss: 0.042538

Финальная ошибка: 0.029567

Рисунок 5. Результаты тестирования нейронной сети на случайных данных

Комментарий: При обучении нейронной сети на случайных данных наблюдается снижение ошибки в процессе обучения, однако итоговое значение остаётся значительно выше, чем в предыдущем эксперименте. Это связано с тем, что между входными и выходными данными отсутствует функциональная зависимость. Нейронная сеть в данном случае не способна выявить закономерность и фактически пытается аппроксимировать случайный шум, что приводит к ограниченному снижению ошибки. Таким образом, эффективность обучения нейронной сети напрямую зависит от наличия закономерности в данных.

Соседние файлы в предмете Нейронные сети