我正在尝试归一化我的网络输出的张量,但是这样做却出错了。代码如下:
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
任何帮助将不胜感激!谢谢!
答案 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)