Я бы хотел использовать предварительно обученную модель и обучить только часть классификатора, не меняя веса в основной части сети.
Я импортировал модель, изменил выходной слой чтобы соответствовать количеству классов, которые у меня есть в моих данных, и создать экземпляр оптимизатора:
model = torch.hub.load('pytorch/vision:v0.6.0', 'mobilenet_v2', pretrained=True, force_reload=True)
model.classifier[1] = nn.Linear(1280, 50, True)
optimizer = torch.optim.Adam(model.classifier.parameters(), lr=0.05)
Затем в обучающей части я просто делаю (как всегда):
optimizer.zero_grad()
loss.backward()
optimizer.step()
Таким образом , я тренирую только часть классификатора сети или он все еще каким-то образом корректирует веса всей сети, и я что-то упускаю?