Файл: Министерство цифрового развития, связи и массовых коммуникаций российской федерации федеральное государственное бюджетное образовательное учреждение высшего образования.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 37

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ



ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

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

(СПбГУТ)


Факультет Информационных Систем и Технологий

Кафедра Интеллектуальных Систем Автоматизации и Управления


Направление подготовки:

15.03.04 - Автоматизация технологических процессов и производств

Направленность (профиль):

Программно-алгоритмическое обеспечение автоматизированных систем


ЛАБОРАТОРНАЯ РАБОТА № 1

по дисциплине:

Нейросетевые технологии

на тему:

«Задание № 1: Аппроксимация функций»


Вариант № 5









Выполнил(и) студент(ы) группы

ИСТ-142







Андреев Г.А., Борисов Н.В, Кардаков Ф.Д.







Фамилия И. О.







Руководитель

доцент

оценка







уч. степень, уч. звание







Бондаренко И. Б.

дата, подпись




Фамилия И. О.



Цель работы: Смоделировать заданную функцию на отрезке [0, 8] с использованием библиотеки neuralnet. Отчет должен содержать подготовку данных для обучения сети. Обоснование выбранной архитектуры. Структурную схему обученной сети с указанием весов. Графики моделируемой и смоделированной функций.


Рис. 1 Таблица 1.
Листинг программы на языке Python:

from keras.models import Sequential

from keras.layers import Dense

import numpy as np

import matplotlib.pyplot as plt

from ann_visualizer.visualize import ann_viz;
# задаем исходную функцию

def f(x):

    return np.sin(x) / (np.cos(2*x)+2)
# генерируем обучающие данные

X_train = np.linspace(0, 8, 1000)

y_train = f(X_train)
# создаем модель

model = Sequential()

model.add(Dense(64, input_shape=(1,), activation='gelu'))

model.add(Dense(64, activation='gelu'))

model.add(Dense(64, activation='gelu'))

model.add(Dense(1, activation='linear'))
# компилируем модель

model.compile(loss='mean_squared_error', optimizer='adam')
# обучаем модель

history = model.fit(X_train, y_train, epochs=1000, batch_size=32, verbose=0)
# генерируем тестовые данные

X_test = np.linspace(0, 8, 100)

y_test = f(X_test)
ann_viz(model, title="Neural Network")

y_pred = model.predict(X_test)

plt.plot(X_test, y_test, label='original function')

plt.plot(X_test, y_pred, label='approximation')

plt.legend()

plt.show()


Полученные выходные данные:




Топология сети:

1, 64,64,64, 1

Рис. 2 Топология нейросети.

Вывод: В ходе выполнения лабораторной работы и исследования данной нейросети, было выявлено, что данная нейросеть довольно точно аппроксимирует заданную функцию. В реализации модели использовалась структура из 1 входного нейрона, 64 нейрона в трех скрытых слоях и 1 нейрона выходного слоя. Функция активации: GELu, алгоритм оптимизации: Adam. Используемые библиотеки для реализации задачи: Keras, TensorFlow, TensorBoard. Задача была выполнена успешно.

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