gpt4 book ai didi

python-3.x - 如何构建一个与 autograd 兼容的 Pytorch 模块,可以像图像一样调整张量的大小?

转载 作者:行者123 更新时间:2023-12-02 00:29:04 25 4
gpt4 key购买 nike

我想知道是否可以在 Pytorch 中构建一个图像调整大小模块,该模块将 3*H*W 的 torch.tensor 作为输入并返回一个张量作为调整大小的图像。

我知道可以将张量转换为 PIL 图像并使用 torchvision,但我也希望将渐变从调整大小的图像反向传播到原始图像,以下示例将返回此类错误(在 Windows 10 上的 PyTorch 0.4.0 中):

import numpy as np
from torchvision import transforms

t2i = transforms.ToPILImage()
i2t = transforms.ToTensor()

trans = transforms.Compose(
t2i, transforms.Resize(size=200), i2t]
)

test = np.random.normal(size=[3, 300, 300])
test = torch.tensor(test, requires_grad=True)
resized = trans(test)
resized.backward()

print(test.grad)

Traceback (most recent call last):
File "D:/Projects/Python/PyTorch/test.py", line 41, in <module>
main()
File "D:/Projects/Python/PyTorch/test.py", line 33, in main
resized = trans(test)
File "D:\Anaconda3\envs\pytorch\lib\site-packages\torchvision\transforms\transforms.py", line 42, in __call__
img = t(img)
File "D:\Anaconda3\envs\pytorch\lib\site-packages\torchvision\transforms\transforms.py", line 103, in __call__
return F.to_pil_image(pic, self.mode)
File "D:\Anaconda3\envs\pytorch\lib\site-packages\torchvision\transforms\functional.py", line 102, in to_pil_image
npimg = np.transpose(pic.numpy(), (1, 2, 0))
RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.

如果不先将张量与 autograd 分离,我似乎无法“调整”张量的大小,但分离它会阻止我计算梯度。

有没有办法构建一个与 autograd 兼容的 torchvision.transforms.Resize 功能相同的 torch 函数/模块?非常感谢任何帮助!

最佳答案

torch.nn.functional.upsample对我有用,ypa!

关于python-3.x - 如何构建一个与 autograd 兼容的 Pytorch 模块,可以像图像一样调整张量的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50408673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com