как часть курса python онлайн, я разрабатываю программу искусственного интеллекта, которая может идентифицировать цветы. После моего первого представления мне сказали, что я забыл заморозить параметры после загрузки модели, чтобы они не изменялись во время backprop. Чтобы решить эту проблему, в блоке, в который я загружаю свою модель, я сделал это:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model = models.vgg16(pretrained = True)
model
for param in model.parameters():
param.requires_grad = False
Затем, при запуске блока, в котором я определяю новую прямую связь (кодовый блок ниже, я получаю ошибку 'ValueError: оптимизация параметр, который не требует градиентов '
features = list(model.classifier.children())[:-1]
num_filters = model.classifier[len(features)].in_features
features.extend([
nn.Linear(25088, 2048),
nn.ReLU(True),
nn.Linear(2048, 512),
nn.ReLU(True),
nn.Linear(512, 102),
nn.LogSoftmax(dim=1)
])
model.classifier = nn.Sequential(*features)
criterion = nn.NLLLoss()
model = model.to('cuda')
optimizer = optim.Adam(model.classifier.parameters(), lr = 0.001)
model
Было бы здорово, если бы кто-нибудь мог мне помочь с этим.