【发布时间】:2021-05-26 01:11:40
【问题描述】:
torch.empty_like 的火炬文档中的描述说:
torch.empty_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) → 张量
返回一个与输入大小相同的未初始化张量。
torch.empty_like(input)等价于torch.empty(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)。参数
input (Tensor) – 输入的大小将决定输出张量的大小。
我要做的是:
>>> torch.empty(3,4)
tensor([[-1.8597e+15, 4.5657e-41, -1.8597e+15, 4.5657e-41],
[ 4.4842e-44, 0.0000e+00, 8.9683e-44, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]])
>>> c1
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> torch.empty_like(c1)
tensor([[139942262173040, 93851872482144, 1, 0],
[ 0, 0, 93851872492496, 0],
[ 0, 0, 0, 0]])
>>> d
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
>>> torch.empty_like(d)
tensor([[-8.6092e-25, 3.0620e-41, 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]])
似乎torch.empty_like 返回的张量取决于输入值,这与文档中的描述相反。有人可以解释一下吗?
【问题讨论】:
-
未初始化内存的内容可以是任何东西。
.empty_like()仅在您将立即为所有元素分配一些值的情况下才有用。