Un tutorial adatto ai principianti

In questo post, esaminiamo un’implementazione VGG e il suo addestramento sul set di dati STL10 (2, 3).

Abbiamo esaminato l’architettura VGG in a messaggio precedente. Per favore, dai un’occhiata se non hai familiarità.

In poche parole,

VGG sta per Gruppo di geometria visiva ed è un gruppo di ricerca presso l’Università di Oxford. Nel 2014, hanno progettato un’architettura di rete neurale convoluzionale profonda per il compito di classificazione delle immagini e le hanno dato il nome; cioè VGG (1).

VGGNet è disponibile in alcune configurazioni come VGG16 (con 16 livelli) e VGG19 (con 19 livelli).

L’architettura di VGG16 è la seguente: ha 13 livelli convoluzionali e 3 livelli completamente connessi.

Immagine dell’autore

Implementiamo VGG16 in PyTorch.

import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms
import numpy as np
import matplotlib.pyplot as plt

class 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…

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *