第18个方法
torch.zeros_like(input, *, dtype=None, layout=None, device=None,
requires_grad=False, memory_format=torch.preserve_format)—>tensor
- 此方法返回一个与input形状相等的,并且用标量值填充0填充的全0tensor。
torch.zeros_like(input)
与torch.zeros(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)
是等价的,使用那个都可以,torch.zeros()
我上篇文章讲过,有兴趣可以去看看。 - 从pytorch0.4版本开始,这个方法不再支持out关键字,(torch.zeros()还是支持的)。另外,旧的
torch.zeros_like(input, out=output)
是等于torch.zeros(input.size(), out=output)
。
使用方法如下:
>>> input = torch.empty(2, 3)
>>> torch.zeros_like(input)
tensor([[ 0., 0., 0.],
[ 0., 0., 0.]])
参数介绍
input(tensor)
:input的形状将会决定输出tensor的形状。dtype(torch.dtype, optional)
:可选参数,希望返回tensor中的数据类型,如果为None,默认为input中的数据类型。layout(torch.layout, optional)
:希望返回tensor的布局,如果为None,取决于input的布局,布局有稠密型和稀疏型,我在上一篇文章里(torch.zeros()中讲过),有兴趣可以去翻阅。device(torch.device, optional)
:期望返回的tensor所处的设备,可以为cpu或cuda,如果为None,则取决于input所在的设备。requires_grad(bool, optional)
:指定所需tensor是否需要梯度信息。如果为True,torch自动求导时会对此tensor来计算导数并存放于此tensor的grad属性中。memory_format(torch.memory_format, optional)
:期望返回的tensor的内存格式,默认为torch.preserve_format.
补充:
torch.memory_format表示torch.Tensor被分配或将要分配在其上的内存格式。可能的取值有
torch.contiguous_format
:张量是或将在密集的非重叠内存中分配。以值降序表示的步幅。torch.channels_last
:张量是或将在密集的非重叠内存中分配。步长由strides[0] > strides[2] > strides[3] > strides[1] == 1(即NHWC顺序)中的值表示。torch.preserve_format
:在诸如clone之类的函数中使用,以保留输入张量的存储格式。如果将输入张量分配在密集的非重叠内存中,则会从输入中复制输出张量步幅。否则输出步幅将遵循torch.contiguous_format
。