Нейронные сети
Автор: E8lan E8lan • Январь 15, 2023 • Лабораторная работа • 1,580 Слов (7 Страниц) • 136 Просмотры
Министерство образования и науки России
ФГБОУ ВО Ульяновский государственный университет
Факультет Математики, информационных и авиационных технологий
Кафедра Телекоммуникационные технологии и сети
Лабораторная работа №4
По дисциплине «Интеллектуальные системы и технологии»
Нейронные сети
Выполнил студент ИС-0-18/1 Гиматдинов М.А.
Преподаватель Доцент Липатова С.В.
Ульяновск
2021 г.
Цель: получение практических навыков программирования нейронных сетей на языке Python с использованием библиотеки PyTorch.
Задание: используя программу Jupiter Notebook, язык программирования Python, библиотеку PyTorch построить нейронную сеть по варианту и использовать для получения результата.
[pic 1]
Код:
import torch
import torch.nn as nn
import torchvision.transforms as transforms
import torchvision.datasets as dsets
import matplotlib.pyplot as plt
# Загрузка / генерация данных для обучения НС
#Создаем обучающую и тестовую выборки на базе CIFAR10
train_dataset = dsets.CIFAR10(root = './data',
train = True,
transform = transforms.ToTensor(),
download = True)
test_dataset = dsets.CIFAR10(root = './data',
train = False,
transform = transforms.ToTensor())
#Задаем параметры
#Размер партии
batch_size = 256
#Количество итераций
n_iters = 1100
#Количество эпох
num_epochs = n_iters / (len(train_dataset) / batch_size)
num_epochs = int(num_epochs)
#Подаем данные в загрузчик
train_loader = torch.utils.data.DataLoader(dataset = train_dataset,
batch_size = batch_size,
shuffle = True)
test_loader = torch.utils.data.DataLoader(dataset = test_dataset,
batch_size = batch_size,
shuffle = False)
# Построения НС
#Определяем рекуррентную нейронную сеть
class RNNModel(nn.Module):
def __init__(self, input_dim, hidden_dim, layer_dim, output_dim):
super(RNNModel, self).__init__()
#Размерность скрытых слоев
self.hidden_dim = hidden_dim
#Количество скрытых слоев
self.layer_dim = layer_dim
self.rnn = nn.RNN(input_dim, hidden_dim, layer_dim, batch_first=True,
nonlinearity='tanh')
#Слой считывания
self.fc = nn.Linear(hidden_dim, output_dim)
def forward(self, x):
h0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_()
out, hn = self.rnn(x, h0.detach())
out = self.fc(out[:, -1, :])
return out
#Задаем параметры НС
#Количество входов
input_dim = 16
#Размерность скрытого слоя
hidden_dim = 30
#Количество скрытых слоев
layer_dim = 2
#Количество выходов
output_dim = 10
#Обучаемость
learning_rate = 0.001
...