Вы загружаете модель и веса.
import torch
import torch.nn as nn
import torchvision.models as models
r = models.resnet50(pretrained=True)
Обратите внимание, что в исходном повторном отправлении имеется 1000 категорий / классов.Поэтому, когда вы загружаете предварительно подготовленную модель, последняя fc
будет для 1000 классов.
Вот метод forward()
, который у вас есть, и над этим кодом находится ваша модель.
Вы можете удалить последний fc
полностью подключенный слой из исходной модели resnet50 и добавить свой новый fc
точно с 19 классами (19 выходов), и вы можете обучить классификатор только для этого последнего слоя.Остальные слои, кроме последнего, должны быть заморожены.
Таким образом, вы изучите только 19 классов, которые вам нужны.
Обратите внимание, что метод resent __init__
также может принимать числоклассы, так что вы можете попробовать это, но в этом случае вы не можете загрузить предварительно обученные веса, поэтому вам нужно использовать pretrained=False
и вам нужно тренироваться с нуля.
import torch
import torch.nn as nn
import torchvision.models as models
r = models.resnet50(num_classes=19, pretrained=False)