MK
В задаче нужно находить точки на изображении. Использую resnet50 предобученную на ImageNet. Заменяю выход последнего слоя с 1000 классов на количество точек*2 (х и у координата)
import torchvision.models as models
...
model = models.resnet50(pretrained=True, )
model.fc = nn.Linear(model.fc.in_features, 2 * NUM_PTS, bias=True)
Для начала хотел попробовать обучить только последний fc слой
# freeze all layers
for param in model.parameters():
param.requires_grad = False
# train only head
model.fc.weight.requires_grad = True
model.fc.bias.requires_grad = True
Я рассчитывал, что обучение у такой сети будет гораздо быстрей, чем когда все слои разморожены. Но на мое удивление скорость осталась практически той же самой на эпоху 20 мин vs 17 минут
Вопрос. Правильно ли я заморозил слои? Разве сеть не должна обучаться быстрей, чем если бы все слои были разморожены?