У меня есть обученная модель ghostnet с последним слоем классификатора. В моем случае это форма 1280 x 4.
Я хотел бы получить 1280 входных значений для этого слоя. Как это сделать? Я вижу, что это возможно сделать с помощью крючков, но концепция выглядит запутанной. Знаете ли вы альтернативные способы сделать это?
Я попробовал несколько примеров с использованием крючков, но не уверен, что понимаю, что они делают. Мой code для оценки модели здесь:
Я хотел бы получить 1280 значений из предыдущего слоя в дополнение к моим четырем выходам.
(classifier): Linear(in_features=1280, out_features=4, bias=True)
def model_valid(model, val_data):
model.eval()
correct = 0
total = 0
score = 0
pred = np.array([])
lbs = np.array([])
with torch.no_grad():
for imgs, labels in tqdm(val_data):
imgs = imgs.to(device = 'cuda')
labels = labels.to(device = 'cuda')
outputs = model(imgs)
_, predicted = torch.max(outputs, dim = 1)
_, labels = torch.max(labels, dim = 1)
total += labels.shape[0]
correct += int((predicted == labels).sum())
# print(predicted)
pred = np.append(pred, predicted.cpu().numpy(), axis = 0)
lbs = np.append(lbs, labels.cpu().numpy(), axis = 0)
print(f'model accuracy is {correct/total}')
return correct/total, [lbs, pred]
Иннокентий
Вопрос задан20 июня 2024 г.