pytorch每日一学18(torch.zeros_like())创建与指定tensor形状相等的全0tensor

第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

你可能感兴趣的:(pytorch每日一学,python,机器学习,pytorch,神经网络,深度学习)