Извлечение значений скрытого слоя из модели Pytorch

1
8

У меня есть обученная модель 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 г.

1 Ответ

Ваш ответ

Загрузить файл.