当前位置:   article > 正文

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

[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)是等价的
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/272352?site
推荐阅读
相关标签
  

闽ICP备14008679号