Получение 'тензор не изображение факела' для типа данных - PullRequest
0 голосов
/ 11 марта 2020

Как показывает вопрос, я пытаюсь преобразовать images в тензор.

X, y = train_sequence[idx]  

images = Variable(torch.from_numpy(X)).to(device) # [batch, channel, H, W]
masks = Variable(torch.from_numpy(y)).to(device) 
print(type(images)) ## Output: <class 'torch.Tensor'>


images = transforms.Normalize((0.5, 0.5, 0.5, 0.5, 0.5), (0.5, 0.5, 0.5,0.5, 0.5))(images)
masks =  transforms.Normalize((0.5), (0.5))(masks)

Но я получаю ошибку в ---> 19 images = transforms.Normalize((0.5, 0.5, 0.5, 0.5, 0.5), (0.5, 0.5, 0.5,0.5, 0.5))(images)

TypeError: tensor is not a torch image.

1 Ответ

1 голос
/ 11 марта 2020

Это связано с тем, что на данный момент torchvison.transforms.Normalize поддерживает только изображения с 2 или 3 каналами без размерности пакета ie. (C, H, W). Таким образом, вместо передачи 4D-тензора, будет работать что-то вроде этого:

image = torch.ones(3, 64, 64)
image = transforms.Noramalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))(image)

Кроме того, поскольку значения 0.5 представляют среднее и стандартное отклонение каналов изображения, обычно должно быть только 3 канала. (вы не «нормализуете» размерность пакета, только пространственные), поэтому вместо использования tuple длины 5 выполните (0.5, 0.5, 0.5).

...