как я могу исправить проблему pytorch predict с помощью глубокого обучения

#python #class #pytorch #prediction #efficientnet

#python #класс #pytorch #предсказание #efficientnet #прогнозирование

Вопрос:

Учитывая groups=1 вес размера [48, 3, 3, 3] , ожидаемый ввод [5, 128, 129, 4] должен иметь 3 канала, но вместо этого получил 128 каналов.

Это мой код:

     **model_ft.eval()
    for image in test_loader:
        image = image.cuda()
        output = model_ft(image)
        output = output.cpu().detach().numpy()
        for i, (e, n) in enumerate(list(zip(output, name))):
            sub.loc[sub['id_code'] == n.split('/')[-1].split('.')[0], 'diagnosis'] = le.inverse_transform([np.argmax(e)])
            
    sub.to_csv('submission.csv', index=False)**
    
    print(X_test.shape)
    (3071, 128, 128, 3)
    from torch.utils.data import DataLoader
    test_loader = DataLoader(X_test, batch_size=5, shuffle=True)
    print(train_data)
  

я не знаю, как решить эту проблему, чтобы предсказать мое соревнование

Ответ №1:

Я предполагаю, что

 print(X_test.shape)
(3071, 128, 128, 3)
  

вы имеете в виду, что тестовые данные содержат 3071 выборку с разрешением 128×128 пикселей и 3 цветовыми каналами в каждой.
Также я предполагаю, что модель, которую вы используете, не транспонирует входные данные, поэтому слои свертки ожидают макет по умолчанию, который является shape (N, C, H, W), но вы предоставляете свои данные как (N, H, W, C).

Решение: Попробуйте image.transpose_(1, 3) или image = image.cuda().transpose(1, 3) , прежде чем передавать его модели.