Читаем Сверточные нейросети полностью

class ConvNet(nn.Module):

def __init__(self):

super(ConvNet, self).__init__

self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1)

self.bn1 = nn.BatchNorm2d(64) # Batch Normalization после первого сверточного слоя

self.conv2 = nn.Conv2d(64, 128, kernel_size=3, padding=1)

self.bn2 = nn.BatchNorm2d(128) # Batch Normalization после второго сверточного слоя

self.fc1 = nn.Linear(128 * 16 * 16, 256)

self.fc2 = nn.Linear(256, 10)

def forward(self, x):

x = F.relu(self.bn1(self.conv1(x)))

x = F.max_pool2d(x, kernel_size=2, stride=2)

x = F.relu(self.bn2(self.conv2(x)))

x = F.max_pool2d(x, kernel_size=2, stride=2)

x = x.view(-1, 128 * 16 * 16)

x = F.relu(self.fc1(x))

x = self.fc2(x)

return x

# Создаем экземпляр сети

model = ConvNet

# Определяем функцию потерь и оптимизатор

criterion = nn.CrossEntropyLoss

optimizer = torch.optim.SGD(model.parameters, lr=0.01)

# Пример обучения на некоторых данных

for epoch in range(num_epochs):

for images, labels in train_loader:

optimizer.zero_grad

outputs = model(images)

loss = criterion(outputs, labels)

loss.backward

optimizer.step

```

Это простой пример сверточной нейронной сети с Batch Normalization после каждого сверточного слоя. Важно отметить, что в PyTorch Batch Normalization включается просто путем добавления слоя `nn.BatchNorm2d` после сверточного слоя, как показано в примере.

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

Глава 2. Свертка и пулинг

– Свойства и операции свертки

– Различные виды пулинга: max-pooling, average-pooling

– Роль и преимущества пулинга в CNN


Сверточные нейронные сети (CNN) используют свертку и пулинг для эффективного извлечения признаков из входных данных, таких как изображения. Вот более подробное объяснение этих концепций:

Свойства и операции свертки

 Свертка – это операция, которая сканирует входное изображение с помощью фильтров (ядер), извлекая локальные признаки. Каждый фильтр выделяет определенные паттерны, такие как края, текстуры или другие визуальные характеристики. Свертка выполняется путем перемещения фильтра по изображению и вычисления скалярного произведения между значениями пикселей и значениями ядра.

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

– Stride (шаг) – это шаг, с которым ядро свертки перемещается по входному изображению. Он определяет расстояние между применениями фильтра к входным данным и влияет на размер выходного изображения.

Давайте рассмотрим пример применения операции свертки на входном изображении.

Предположим, у нас есть следующее изображение размером 5x5 пикселей:

```

[[1, 2, 1, 0, 0],

[0, 1, 0, 2, 1],

[1, 0, 2, 1, 0],

[0, 1, 0, 1, 0],

[1, 2, 1, 0, 0]]

```

Также у нас есть фильтр (ядро свертки) размером 3x3:

```

[[1, 0, 1],

[0, 1, 0],

[1, 0, 1]]

```

Мы будем применять этот фильтр к изображению с определенным шагом (stride), чтобы получить выходное изображение (feature map).

Пусть наш шаг (stride) будет равен 1.

Тогда, начиная с верхнего левого угла изображения, мы будем перемещать наш фильтр по всей области изображения и вычислять скалярное произведение между значениями пикселей изображения и значениями фильтра. Затем полученное значение будет записано в соответствующую позицию на выходном изображении (feature map).

Процесс будет продолжаться до тех пор, пока фильтр не пройдет по всему изображению. Если шаг (stride) больше 1, фильтр будет перемещаться с большим интервалом, что приведет к уменьшению размерности выходного изображения.

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

Различные виды пулинга

 Max-pooling

Max-pooling является одной из ключевых операций в сверточных нейронных сетях (CNN). Он применяется после операции свертки для уменьшения размерности данных, сохраняя при этом наиболее важные признаки изображения или карт признаков. В основном, max-pooling используется для уменьшения вычислительной нагрузки и количества параметров модели, а также для предотвращения переобучения.

Операция max-pooling выполняется путем сканирования окна определенного размера (например, 2x2 или 3x3) по входной матрице (например, карты признаков) и выбора максимального значения из каждого окна. При этом окно перемещается с определенным шагом (stride) по входным данным. Результатом этой операции является новая матрица с уменьшенными размерами, содержащая наиболее активные признаки из исходных данных.

Перейти на страницу:

Похожие книги

Об интеллекте
Об интеллекте

В книге "Об интеллекте" Джефф Хокинс представляет революционную теорию на стыке нейробиологии, психологии и кибернетики и описывающую систему "память-предсказание" как основу человеческого интеллекта. Автор отмечает, что все предшествующие попытки создания разумных машин провалились из-за фундаментальной ошибки разработчиков, стремившихся воссоздать человеческое поведение, но не учитывавших природу биологического разума. Джефф Хокинс предполагает, что идеи, сформулированные им в книге "Об интеллекте", лягут в основу создания истинного искусственного интеллекта - не копирующего, а превосходящего человеческий разум. Кроме этого книга содержит рассуждения о последствиях и возможностях создания разумных машин, взгляды автора на природу и отличительные особенности человеческого интеллекта.Книга рекомендуется всем, кого интересует устройство человеческого мозга и принципы его функционирования, а также тем, кто занимается проблемами разработки искусственного интеллекта.

Джефф Хокинс , Джеф Хокинс , Сандра Блейксли , Сандра Блэйксли

Технические науки / Прочая компьютерная литература / Образование и наука / Книги по IT / Зарубежная компьютерная, околокомпьютерная литература
Тайны и секреты компьютера
Тайны и секреты компьютера

Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, — про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию.Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится.http://comptain.nm.ru

Антон Александрович Орлов , Антон Орлов

Фантастика / Зарубежная компьютерная, околокомпьютерная литература / Фэнтези / Прочая компьютерная литература / Книги по IT
Фотоприколы с помощью Photoshop
Фотоприколы с помощью Photoshop

Книга в доступной и юмористической форме раскроет перед вами волшебный мир компьютерной графики. В первой (теоретической) части вы познакомитесь с основными понятиями цифровой графики, интерфейсом программы Photoshop и принципами ее работы. Вторая (практическая) часть, представленная в виде забавных примеров, весело и непринужденно поможет вам научиться выполнять различные трюки с фотографиями. Вы узнаете, как изменить внешний вид президента, сделать утюг водоплавающим, заставить футболиста летать и многое другое, а заодно изучите богатую палитру инструментов Photoshop. С этой веселой книгой, снабженной забавными иллюстрациями, проблемы с Photoshop покажутся вам просто смешными.

Геннадий Геннадьевич Кондратьев , Юрий Анатольевич Гурский

Программирование, программы, базы данных / Прочая компьютерная литература / Книги по IT