PyTorch - Giới thiệu về Chuyển đổi
Convents là tất cả về việc xây dựng mô hình CNN từ đầu. Kiến trúc mạng sẽ bao gồm sự kết hợp của các bước sau:
- Conv2d
- MaxPool2d
- Đơn vị tuyến tính chỉnh lưu
- View
- Lớp tuyến tính
Đào tạo người mẫu
Đào tạo mô hình là một quá trình giống như các bài toán phân loại ảnh. Đoạn mã sau hoàn thành quy trình của mô hình đào tạo trên tập dữ liệu được cung cấp -
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}})
Phương pháp này bao gồm các logic khác nhau để đào tạo và xác nhận. Có hai lý do chính để sử dụng các chế độ khác nhau -
Trong chế độ tàu, việc bỏ học sẽ loại bỏ một phần trăm giá trị, điều này sẽ không xảy ra trong giai đoạn xác nhận hoặc thử nghiệm.
Đối với chế độ đào tạo, chúng tôi tính toán độ dốc và thay đổi giá trị tham số của mô hình, nhưng không cần truyền ngược trong giai đoạn thử nghiệm hoặc xác nhận.