Результат перевода

Красота и мода оживленные статьи о лучших тенденциях

Подходящий для начинающих обучающий материал

В этом посте мы рассматриваем реализацию VGG и его обучение на наборе данных STL10 [2, 3].

Мы рассмотрели архитектуру VGG в предыдущем посте. Если вы не знакомы с ней, пожалуйста, возьмите на это внимание.

Классификация изображений для начинающих

Архитектура VGG и ResNet из 2014 года

towardsdatascience.com

Вкратце,

VGG расшифровывается как Visual Geometry Group и является научной группой при Университете Оксфорда. В 2014 году они разработали архитектуру глубокой сверточной нейронной сети для задачи классификации изображений и назвали ее своим именем; то есть VGG [1].

VGGNet доступен в нескольких конфигурациях, таких как VGG16 (с 16 слоями) и VGG19 (с 19 слоями).

Архитектура VGG16 выглядит следующим образом: она состоит из 13 слоев свертки и 3 полносвязных слоев.

Изображение автора

Реализация модели

Давайте реализуем VGG16 в PyTorch.

import torchimport torch.nn as nnimport torch.optim as optimimport torch.nn.functional as Fimport torchvisionimport torchvision.transforms as transformsimport numpy as npimport matplotlib.pyplot as pltclass VGG16(nn.Module):    def __init__(self, input_channel, num_classes):        super(VGG16, self).__init__()        self.features = nn.Sequential(            nn.Conv2d(input_channel, 64, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.Conv2d(64, 64, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.MaxPool2d(kernel_size=2, stride=2),            nn.Conv2d(64, 128, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.Conv2d(128, 128, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.MaxPool2d(kernel_size=2, stride=2),            nn.Conv2d(128, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.Conv2d(256, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.Conv2d(256, 256, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.MaxPool2d(kernel_size=2, stride=2),            nn.Conv2d(256, 512, kernel_size=3, padding=1), nn.ReLU(inplace=True),            nn.Conv2d(512…