Pytorch初学者:tensor.new方法

sr4lhrrt  于 11个月前  发布在  其他
关注(0)|答案(5)|浏览(107)

各位,我有个小问题。
Pytorch中的方法tensor.new(..)的目的是什么,我在文档中没有找到任何东西。它看起来像是创建了一个新的Tensor(顾名思义),但为什么我们不只是使用torch.Tensor构造函数,而是使用这个需要现有Tensor的新方法。
先谢谢你了。

l7mqbcuq

l7mqbcuq1#

正如tensor.new()的文档所说:
构造一个与selfTensor数据类型相同的newTensor。
另请注意:
对于CUDATensor,此方法将在与此Tensor相同的设备上创建Tensor。

mi7gmzs6

mi7gmzs62#

在PyTorch的新版本中,似乎有许多不同的new_*方法旨在取代这个“遗留”new方法。
因此,如果你有一些Tensort = torch.randn((3, 4)),那么你可以使用以下方法之一来构建一个具有相同类型和设备的新Tensor,这取决于你的目标:

t = torch.randn((3, 4))
a = t.new_tensor([1, 2, 3])  # same type, device, new data
b = t.new_empty((3, 4))      # same type, device, non-initialized
c = t.new_zeros((2, 3))      # same type, device, filled with zeros
...

个字符

tez616oj

tez616oj3#

这里是一个使用new()的简单用例和示例,因为如果没有这个,这个函数的实用性就不是很清楚。
假设你想给Tensor(或变量)添加高斯噪声,而事先不知道它的数据类型是什么。
这将创建一个高斯噪声Tensor,其形状和数据类型与变量X相同:

noise_like_grad = X.data.new(X.size()).normal_(0,0.01)

字符串
这个例子还说明了new(size)的用法,这样我们就得到了一个与X类型和大小相同的Tensor。

a6b3iqyw

a6b3iqyw4#

我找到了一个答案。它用于创建一个新的相同类型的Tensor。

kognpnkq

kognpnkq5#

投票的答案是正确的。我想补充一点:我认为从pytorch文档中,我们实际上找不到新方法的解释。我猜原因是这个方法是由C实现的,而不是Python。

相关问题