第12个方法

torch.tensor(data, *, dtype=None, device=None, requires_grad=False, pin_memory=False)
  • 此方法用于创建pytorch中的tensor创建,此方法使用data构建并返回一个tensor。使用方法如下:
import torch
a = torch.tensor([2, 3, 5])
  • 此时a就是一个具有值[2, 3, 5]的tensor。
  • 创建浮点tensor使用
import torch
a = torch.tensor([2., 3., 5.])
  • 各个参数的意思:
  • data:tensor的数据值,可以是list,tuple,NumPy ndarryay, scalar或者其它的类型。
  • dtype:用于指定生成的tensor中数据的类型,如果不进行设置,那么使用系统默认的类型,一般浮点数是torch.float32,整形是torch.int64,默认类型可以使用torch.set_default_dtype()进行更改(前面的文章讲过)。
  • device:用于指定创建的tensor存在的位置,即在cpu还是gpu上,cpu使用device='cpu',gpu使用device='cuda',默认为cpu,不过可以更改默认设置,使用torch.set_default_tensor_type(t)即可,以前也讲过。
  • requires_grad:用于指定创建的tensor需不需要梯度信息,如果需要设为True,否则设为False,默认为False。
  • pin_memory:如果设置为True,那么创建的tensor将会被分配到固定的内存位置,仅仅在tensor在cpu上有用,默认为False。

note: torch.tensor()会复制数据,(不会使用原始的数据区,而是在一个新的内存复制原来的数据并生成新的tensor)如果现在我们有一个tensor data,并且不想要进行复制,那么我们使用torch.Tensor.detach(),使用此方法得到的tensor是和原来的tensor享用同样的storage,并没有进行值的复制;或者使用torch.Tensor.requires_grad_()此方法也是返回一个tensor,和原来的tensor是共用相同的storage,通过此方法可以更改已有的tensor是否需要梯度信息。
  如果data类型是NumPy ndarray并且不想进行拷贝,那么使用torch.as_tensor()。

注意torch.Tensor.这样的方法是Tensor这个类的方法,应该使用tensor直接调用,全打出来也行,但是打那么多不累吗?如下所示:

import torch
a = torch.tensor([2., 3., 5.])
b = a.detach()

pytorch tensor 去除一个维度 pytorch.tensor_神经网络

  • 当data(例如为x)是一个tensor时,那么我们使用此方法创建出来的tensor(torch.tensor(x))x.clone().detach()的效果是一样的。并且torch.tensor(x, requires_grad=True)x.clone().detach().requires_grad_(True)是一样的,并且更推荐使用clone()与detach(),虽然这几个方法还没有讲,但是大致上知道是什么意思,clone就是复制一个和现在的tensor一模一样的tensor,等到以后讲到这几个方法的时候,会更加详细的进行对比。