Файл: Министерство цифрового развития, связи и массовых коммуникаций российской федерации федеральное государственное бюджетное образовательное учреждение высшего образования.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