Невозможно нормализовать тензор в PyTorch - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь нормализовать тензор, выводимый моей сетью, но получаю ошибку при этом. Код выглядит следующим образом:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model_load_path = r'path\to\saved\model\file'
model.load_state_dict(torch.load(model_load_path))
model.eval()
output = model(input).to(device).view(-1, 1, 150, 150)
inv_normalize = transforms.Compose(
    [
        transforms.Normalize(mean=[-0.5/0.5], std=[1/0.5])
    ]
)
print(output.size())  # The size printed is torch.Size([1, 1, 150, 150])
output = inv_normalize(output)

Я получаю сообщение об ошибке в следующей строке:

output = inv_normalize(output)

Ошибка гласит:

TypeError: tensor is not a torch image.

Мой вывод - одно изображение с одним каналом, высота и ширина = 150

Любая помощь будет оценена! Спасибо!

1 Ответ

1 голос
/ 17 марта 2019

Для применения transforms.Normalize необходимо преобразовать входные данные в тензор. Для этого вы можете использовать transforms.ToTensor.

inv_normalize = transforms.Compose(
    [
        transforms.toTensor(),
        transforms.Normalize(mean=[-0.5/0.5], std=[1/0.5])
    ]
)

Этот тензор должен состоять из трех измерений (каналы, высота, ширина). В настоящее время у вас есть одно измерение ко многим. Просто удалите дополнительное измерение в вашем view вызове:

output = model(input).to(device).view(1, 150, 150)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...