pytorch每日一学12(torch.tensor())tensor的创建

第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()

在这里插入图片描述

  • 当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,等到以后讲到这几个方法的时候,会更加详细的进行对比。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值