无法在PyTorch中规范张量

时间:2019-03-17 09:44:57

标签: pytorch

我正在尝试归一化我的网络输出的张量,但是这样做却出错了。代码如下:

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 个答案:

答案 0 :(得分:1)

要应用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)