【发布时间】:2018-11-16 00:00:37
【问题描述】:
我目前正在使用 tensor.resize() 函数将张量调整为新形状t = t.resize(1, 2, 3)。
这给了我一个弃用警告:
不推荐使用非就地调整大小
因此,我想切换到 tensor.resize_() 函数,这似乎是适当的就地替换。然而,这给我留下了一个
无法调整需要 grad 的变量的大小
错误。 我可以退回到
from torch.autograd._functions import Resize
Resize.apply(t, (1, 2, 3))
这是 tensor.resize() 为避免弃用警告所做的。
这似乎不是一个合适的解决方案,而是对我来说是一种黑客行为。
在这种情况下如何正确使用tensor.resize_()?
【问题讨论】:
-
您确定要使用调整张量大小而不是重塑形状吗?如果你想调整它的大小,有什么可以通过调整大小归档的,还有什么是使用切片操作无法实现的?
-
我认为你说得有道理。实际上,既然您提到它,我意识到我可能应该首先使用 reshape 。这是
t.size()在操作前后的输出:torch.Size([16, 512, 8, 10, 2]) 和torch.Size([16, 512, 8, 20]) -
是的,所以我认为您可以使用
view或reshape(从 0.4.0 版本开始)。
标签: python runtime-error pytorch tensor deprecation-warning