如何理解在PyTorch中创建叶张量?

奥马尔·阿尔苏威迪

从PyTorch文档中

b = torch.rand(10, requires_grad=True).cuda()
b.is_leaf
False
# b was created by the operation that cast a cpu Tensor into a cuda Tensor

e = torch.rand(10).cuda().requires_grad_()
e.is_leaf
True
# e requires gradients and has no operations creating it

f = torch.rand(10, requires_grad=True, device="cuda")
f.is_leaf
True
# f requires grad, has no operation creating it

但是,当叶子ef张量也都从CPU张量转换为Cuda张量(操作)时,为什么它们又被保留?

是因为在就地操作之前Tensore放入了Cuda吗?requires_grad_()

并且由于f是通过赋值device="cuda"而不是方法进行强制转换.cuda()

霍科普

首次创建张量时,它成为叶节点。

基本上,神经网络的所有输入和权重都是计算图的叶节点。

张量上执行任何操作时,它不再是叶节点。

b = torch.rand(10, requires_grad=True) # create a leaf node
b.is_leaf # True
b = b.cuda() # perform a casting operation
b.is_leaf # False

requires_grad_()cuda()其他操作不同。
它创建了一个新的张量,因为需要梯度(可训练的权重)的张量不能依赖于其他任何东西。

e = torch.rand(10) # create a leaf node
e.is_leaf # True
e = e.cuda() # perform a casting operation
e.is_leaf # False
e = e.requires_grad_() # this creates a NEW tensor
e.is_leaf # True

而且,detach()运算会创建一个不需要梯度的新张量:

b = torch.rand(10, requires_grad=True)
b.is_leaf # True
b = b.detach()
b.is_leaf # True

在最后一个示例中,我们创建了一个已经在cuda设备上的新张量。
我们不需要任何操作来投射它。

f = torch.rand(10, requires_grad=True, device="cuda") # create a leaf node on cuda

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在pytorch中动态索引张量?

来自分类Dev

如何在 PyTorch 中获取张量的值?

来自分类Dev

如何展开PyTorch张量?

来自分类Dev

pytorch,如何扩展张量

来自分类Dev

如何理解张量的形状

来自分类Dev

如何在Pytorch中反转布尔值的张量?

来自分类Dev

如何匹配两个pytorch张量中的项目

来自分类Dev

如何使用PyTorch从3D张量中删除元素?

来自分类Dev

如何从Pytorch的2D张量列表中获取列

来自分类Dev

如何将Pytorch张量中的元素映射到ID?

来自分类Dev

如何将张量插入到 pytorch 中的另一个张量中

来自分类Dev

如何理解张量流中的conv2d_transpose

来自分类Dev

如何理解张量板中的 auc_precision_recall 曲线?

来自分类Dev

pytorch中的张量变换?

来自分类Dev

PyTorch中的左移位张量

来自分类Dev

在pytorch张量中过滤行

来自分类Dev

如何创建多维张量?

来自分类Dev

如何创建缩放矩阵以重新缩放PyTorch张量,然后如何使用它?

来自分类Dev

Pytorch:快速创建分数张量方法

来自分类Dev

从`torch`或`numpy`向量创建pytorch张量

来自分类Dev

如何检查张量B中是否也存在张量A的元素,并创建布尔掩码

来自分类Dev

Pytorch从张量文件中读取张量(来自磁盘的流训练)

来自分类Dev

在 PyTorch/Numpy 中,如何将矩阵的行与 3-D 张量中的“矩阵”相乘?

来自分类Dev

pytorch张量如何按特定键值排序?

来自分类Dev

如何将Numba用于Pytorch张量?

来自分类Dev

pytorch:如何堆叠2张量

来自分类Dev

在Pytorch中重复张量的特定列

来自分类Dev

在PyTorch中添加多个张量

来自分类Dev

pytorch中的张量幂和乘法