#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)
, прежде чем передавать его модели.