PyTorch:new_ones vs

Anu*_*pta 6 pytorch

在PyTorch中,new_ones()vs 之间有什么区别ones().例如,

x2.new_ones(3,2, dtype=torch.double)
Run Code Online (Sandbox Code Playgroud)

VS

torch.ones(3,2, dtype=torch.double)
Run Code Online (Sandbox Code Playgroud)

den*_*ger 12

为了这个答案,我假设你x2是一个先前定义的torch.Tensor.如果我们转到PyTorch文档,我们可以阅读以下内容new_ones():

返回size填充大小的Tensor 1.默认情况下,返回的Tensor具有相同的张量torch.dtypetorch.device张量.

ones()

返回填充了标量值1的张量,其形状由变量参数size定义.

因此,基本上,new_ones允许您torch.Tensor在与先前存在的张量(带有张量)相同的设备和数据类型上快速创建新的,而ones()用于创建torch.Tensor从头开始(填充为1)的目的.

  • `new_ones()` 可以用于现有的张量,例如 `x = torch.tensor(); x.new_ones([2,3])`。这允许您在实际初始化之前*在设备之间自由移动张量“x”或计算尺寸。另一方面,“ones()”*直接*创建一个新的张量:“x = torch.ones([2,3])”。 (2认同)

Src*_*Cde 5

新的()

# defining the tensor along with device to run on. (Assuming CUDA hardware is available)

x = torch.rand(5, 3, device="cuda")
Run Code Online (Sandbox Code Playgroud)

new_ones()适用于现有张量。y将继承datatypefromx并将运行在与device定义相同的x

y = x.new_ones(2, 2)
print(y)
Run Code Online (Sandbox Code Playgroud)

输出:

tensor([[1., 1.],
        [1., 1.]], device='cuda:0')
Run Code Online (Sandbox Code Playgroud)

那些()

# defining tensor. By default it will run on CPU.
x = torch.ones(5, 3)
print(x)
Run Code Online (Sandbox Code Playgroud)

输出:

tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])
Run Code Online (Sandbox Code Playgroud)

ones()用于与限定张量1.(如实例)的给定的size,并且不依赖于现有的张量,而new_ones()与现有的张量作品其中相同的继承属性datatypedevice从现有张量,并定义tensor与给定的size