RuntimeError: размер тензора a (224) должен соответствовать размеру тензора b (3) при не синглетонном измерении 0 - PullRequest
0 голосов
/ 12 февраля 2020

пытается нормализовать для питчера

from torchvision.transforms import Normalize

class Unnormalize:
    """Converts an image tensor that was previously Normalize'd
    back to an image with pixels in the range [0, 1]."""
    def __init__(self, mean, std):
        self.mean = mean
        self.std = std

    def __call__(self, tensor):
        mean = torch.as_tensor(self.mean, dtype=tensor.dtype, device=tensor.device).view(3, 1, 1)
        std = torch.as_tensor(self.std, dtype=tensor.dtype, device=tensor.device).view(3, 1, 1)
        return torch.clamp(tensor*std + mean, 0., 1.)


mean = [0.485, 0.456, 0.406]
std = [0.229, 0.224, 0.225]
normalize_transform = Normalize(mean, std)
unnormalize_transform = Unnormalize(mean, std)

тогда мой размер изображения: img = torch.Size ([3, 224, 224])

img_temp=img.permute((1, 2, 0)).cpu().detach()
normalize_transform(img_temp)

---- -------------------------------------------------- --------------------- RuntimeError Traceback (последний вызов был последним) в ----> 1 normalize_transform (img_temp)

~ / venv / lib / python3 .7 / site-packages / torchvision / transforms / transforms.py в call (self, тензор) 173 Tensor: нормализованное изображение Tensor. 174 "" "-> 175 return F.normalize (тензор, self.mean, self.std, self.inplace) 176 177 def repr (self):

~ / venv /lib/python3.7/site-packages/torchvision/transforms/functional.py для нормализации (тензор, среднее значение, стандартное отклонение, на месте) 216 std = torch.as_tensor (std, dtype = dtype, device = tenor.device) -> 217 тензор (среднее [:, нет, нет]). Div_ (std [:, нет, нет]) 218 ​​return тензор 219

RuntimeError: размер тензора a (224) должен соответствовать размеру тензора b (3) при не синглетонном измерении 0

...