Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Решение задач регрессии с помощью нейронной сети

Автор:   •  Апрель 11, 2022  •  Лабораторная работа  •  985 Слов (4 Страниц)  •  752 Просмотры

Страница 1 из 4

ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ.ПРОФ  М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ

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

По дисциплине: «Теория информации, данные, знания»

Решение задач регрессии с помощью нейронной сети

Вариант 6

[pic 1]

г. Санкт-Петербург

2021 год

Оглавление

Задание        2

Выполнение.        3

Исследование нейросети.        3

Задание 1.        7

Задание 2.        7

Задание 3.        8

Задание 4.        9

Задание

Задание 7. Исследовать свойства нейросети.

Задание на лабораторную работу

  1. Исследовать нейронную сеть при заданных начальных параметрах (см. таблицу). Найти минимальное значение n_hidden_neurons, при котором сеть дает удовлетворительные результаты.
  2. Найти наилучшее значение шага градиентного спуска lr в интервале  от номинального значения.[pic 2]
  3. Изменить нейронную сеть для предсказания функции y = 2x  *  sin(2x)
  4. Для этой задачи (п. 3) получите метрику MAE =  [pic 3]

Таблица. Начальные значения гиперпараметров нейронной сети

Вариант

Метод оптимизации

Число нейронов в скрытом слое

n_hidden_neurons

Шаг градиентного спуска

lr

0

SGD

20

0.01

Работа была выполнена в Google Colaboratory.

Исследуем нейронную сеть.

        a)Train dataset (обучение нейронной сети на тренировочных данных)

## Импортируем torch и matplotlib, чтобы рисовать графики.

import torch 

import matplotlib.pyplot as plt 

##

##

import matplotlib

matplotlib.rcParams['figure.figsize'] = (13.05.0)

## начнём тренировку (тренировочных данных)

## Возьмём точки из равномерного распределения от нуля до единицы, 100 штук

x_train = torch.rand(100)

## Kаждую точку домножим на 20, отнимем от неё 10, чтобы график примерно был по центру – это будут наши значения "x". 

x_train = x_train * 20.0 - 10.0  

## "y" – это будут синусы от данных точек.

y_train = torch.sin(x_train)

## Посмотрим что получилось.

plt.plot(x_train.numpy(), y_train.numpy(), 'o')

plt.title('$y = sin(x)$');

[pic 4]

## Добавим в обучающую выборку немного шума.

noise = torch.randn(y_train.shape) / 5.

plt.plot(x_train.numpy(), noise.numpy(), 'o')

plt.axis([-1010-11])

plt.title('Gaussian noise');

y_train = y_train + noise

plt.plot(x_train.numpy(), y_train.numpy(), 'o')

plt.title('noisy sin(x)')

plt.xlabel('x_train')

plt.ylabel('y_train');

## Нужно трансформировать строки в столбцы для поддержки нескольких значений х

##  x_train и y_train изменились, и теперь это столбцы

x_train.unsqueeze_(1)

y_train.unsqueeze_(1);

## Посмотрим что получилось.

[pic 5]

b) Validation dataset (обучаем нейронную сеть на тех данных, которые она еще не видела).

## Начался validation dataset. Валидируется на тех данных которые она не видела.

x_validation = torch.linspace(-1010100)

## Так как мы знаем, что это функция синуса, то её и берем, но в этот раз без шумаy_validation = torch.sin(x_validation.data)

## 

plt.plot(x_validation.numpy(), y_validation.numpy(), 'o')

plt.title('sin(x)')

plt.xlabel('x_validation')

plt.ylabel('y_validation');

...

Скачать:   txt (11.4 Kb)   pdf (278.2 Kb)   docx (667.3 Kb)  
Продолжить читать еще 3 страниц(ы) »
Доступно только на Essays.club