Ошибка времени выполнения: Данные группы=721, ожидаемый вес должен быть не менее 721 при измерении 0, но вместо этого получен вес размера [3, 1, 5, 5]

#python #pytorch

Вопрос:

Вот полная ошибка: стоит отметить, что входное изображение имеет размер 480 на 721.

 Traceback (most recent call last):
  File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 222, in <module>
    output = model(images)
  File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 889, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 180, in forward
    pyr_A = self.lap_pyramid.pyramid_decom(img=real_A_full)
  File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 65, in pyramid_decom
    filtered = self.conv_gauss(current, self.kernel)
  File "/home/amir/PycharmProjects/LPTN/loadPretrainedModel.py", line 58, in conv_gauss
    out = torch.nn.functional.conv2d(img, kernel, groups=img.shape[1])
RuntimeError: Given groups=721, expected weight to be at least 721 at dimension 0, but got weight of size [3, 1, 5, 5] instead
 

Я пытаюсь выполнить вывод по модели LPTN (сеть трансляции пирамид Лапласа).

 model = LPTN()

state_dict = torch.load('/home/amir/PycharmProjects/LPTN/experiments/pretrained_models/net_g_FiveK_numhigh3.pth',
                        map_location='cpu')

model.load_state_dict(state_dict, strict=False)
model.eval()

img = cv2.imread("/home/amir/PycharmProjects/LPTN/scripts/data_preparation/datasets/FiveK/FiveK_480p/train/A/2.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)


images = torch.from_numpy(np.asarray([img])).float()
output = model(images)
prediction = torch.argmax(output)
 

Вот функция, в которой возникает ошибка:

 def conv_gauss(self, img, kernel):
     padding = (2, 2, 2, 2)
     img = torch.nn.functional.pad(img, padding, mode='reflect')
     out = torch.nn.functional.conv2d(img, kernel, groups=img.shape[1])
 

Комментарии:

1. Я думаю, что вам не хватает измерения пакета, видел, как ваш код передавал одно изображение, вы пытались отменить запрос изображения??

2. Что вы имеете в виду, говоря о том, чтобы не подвергать сомнению изображение? Должен ли я это делать?

Ответ №1:

Ну, на самом деле у меня нет кода или чего-то еще, но я делаю предположение, основанное на том, что вы показали

 import cv2
import torch

img = cv2.imread("/home/amir/PycharmProjects/LPTN/scripts/data_preparation/datasets/FiveK/FiveK_480p/train/A/2.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # H, W, C

img_tensor = torch.tensor(img, dtype=torch.float32) # Convert to torch tensor
img_tensor = img_tensor / 255. # Normalize [0 - 1] range (but depends on the model)
img_tensor = img_tensor.permute(2, 1, 0) # Reorder to C, H, W (torch requires this format)
img_tensor = img_tensor.unsqueeze(0) # Becomes this format B, C, H, W

# Set model to eval mode
model.eval()

# Run forward pass
with torch.no_grad(): # Dont run your gradients, speeds up inference
    predictions = model(img_tensor) # Get back predictions from model