با سلام و عرض ادب
میخواستم از خدمتتون سوالی کنم که چطور مدلمون رو بعد از اینکه روی دیتابیس اولیه مون آموزش دادیم، میتونیم برای فاین تیون دیتابیس ثانویه مون استفاده کنیم؟
مثلاً اگر مدلمون رو نوشتیم و با استفاده از برنامه زیر ترین کرده ایم
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
exp_lr_scheduler = lr_scheduler.StepLR(optimizer, step_size=7, gamma=0.1)
#4. Train the network
This is when things start to get interesting. We simply have to loop over our data iterator, and feed the inputs to the network and optimize.
for epoch in range(14): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(dataloaders['train'], 0):
# get the inputs
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
و سپس پرفورمنس شبکه را با برنامه زیر سنجیده باشیمف حالا چطور می توانیم همین نتی را که خودمان ساخته ایم برای فاین تیون استفاده کنیم
correct = 0
total = 0
with torch.no_grad():
for data in dataloaders['val']:
images, labels = data
outputs = net(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print('Accuracy of the network on the 10000 test images: %d %%' % (
100 * correct / total))
برای فاین تیون مدل های آماده ای مثل رزنت برنامه زیر جواب میده اما برای مدل های ساختگی خودمان باید چه کار کنیم؟
model_ft = models.resnet18(pretrained=True)
num_ftrs = model_ft.fc.in_features
model_ft.fc = nn.Linear(num_ftrs, 6)
model_ft = model_ft.to(device)
criterion = nn.CrossEntropyLoss()
Observe that all parameters are being optimized
optimizer_ft = optim.SGD(model_ft.parameters(), lr=0.001, momentum=0.9)
Decay LR by a factor of 0.1 every 7 epochs
exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)
با تشکر و احترام