[Pytorch01]Tensor的创建与复制:tensor(a),detach(a),clone(a),=a

Tensor的创建

tensor()

t=torch.tensor(a)
a可以是列表,ndarray,tensor
对于ndarray和tensor来说,t是一个copy,对t的任何操作都不会影响原有数据。
在这里插入图片描述

随机

和numpy中随机语法类似

rand:在(0,1)的均匀分布中sample
randn: 在N(0,1)的正态分布中sample

torch.rand(2,3)

Tensor的复制

t=tensor(a)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
t将a中的数据读出,然后创建一个新的叶节点。

t=a.clone()

在这里插入图片描述
clone()是在原有的计算图中添加一个与a相同的节点,可以看到这个节点是有grad_fn的,也就是说他是由a通过clone函数生成的

t=a.detach()与t=a.data

在这里插入图片描述
在这里插入图片描述这两者都是对a的引用,对t的修改会影响到a,但是.data存在梯度危险,所以在v0.4之后已经不再使用。
这两者不同于下面直接赋值的地方是,他们是从原计算图中剥离出来的,分配了新的内存地址,而不仅仅是一个别名。

t=a

在这里插入图片描述
python中赋值实际上是引用,可以看到t和a指向同一个内存地址。

t=a.clone().detach()

这种方式和tensor(a)是等价的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值