PyTorch - Konvansiyonlara Giriş
Convents, CNN modelini sıfırdan oluşturmakla ilgilidir. Ağ mimarisi, aşağıdaki adımların bir kombinasyonunu içerecektir -
- Conv2d
- MaxPool2d
- Doğrultulmuş Doğrusal Birim
- View
- Doğrusal Katman
Modeli Eğitmek
Modeli eğitmek, görüntü sınıflandırma problemleriyle aynı süreçtir. Aşağıdaki kod parçacığı, sağlanan veri kümesindeki bir eğitim modelinin prosedürünü tamamlar -
def fit(epoch,model,data_loader,phase
= 'training',volatile = False):
if phase == 'training':
model.train()
if phase == 'training':
model.train()
if phase == 'validation':
model.eval()
volatile=True
running_loss = 0.0
running_correct = 0
for batch_idx , (data,target) in enumerate(data_loader):
if is_cuda:
data,target = data.cuda(),target.cuda()
data , target = Variable(data,volatile),Variable(target)
if phase == 'training':
optimizer.zero_grad()
output = model(data)
loss = F.nll_loss(output,target)
running_loss + =
F.nll_loss(output,target,size_average =
False).data[0]
preds = output.data.max(dim = 1,keepdim = True)[1]
running_correct + =
preds.eq(target.data.view_as(preds)).cpu().sum()
if phase == 'training':
loss.backward()
optimizer.step()
loss = running_loss/len(data_loader.dataset)
accuracy = 100. * running_correct/len(data_loader.dataset)
print(f'{phase} loss is {loss:{5}.{2}} and {phase} accuracy is {running_correct}/{len(data_loader.dataset)}{accuracy:{return loss,accuracy}})
Yöntem, eğitim ve doğrulama için farklı mantık içerir. Farklı modları kullanmanın iki ana nedeni vardır -
Tren modunda, bırakma, doğrulama veya test aşamasında olmaması gereken bir değer yüzdesini kaldırır.
Eğitim modu için, gradyanları hesaplıyoruz ve modelin parametre değerini değiştiriyoruz, ancak test veya doğrulama aşamalarında geri yayılma gerekli değildir.