首页 Paddle框架 帖子详情
detach()什么作用??是类似于copy()的作用吗? 已解决
收藏
快速回复
Paddle框架 问答深度学习 1014 3
detach()什么作用??是类似于copy()的作用吗? 已解决
收藏
快速回复
Paddle框架 问答深度学习 1014 3

不太明白 detah()的作用,希望有朋友可以讲解一下。

作用是类似于list.copy()吗?

附上例子如下:

import paddle
import numpy as np

data = np.random.uniform(-1, 1, [30, 10, 32]).astype('float32')
linear = paddle.nn.Linear(32, 64)
data = paddle.to_tensor(data)
x = linear(data)
y = x.detach()
4# 回复于2021-12
我说一些个人的看法,帮助理解,仅供参考。 你可以将计算图理解成一棵树,从数据输入开始(根节点),每一层的卷积,池化操作,都是树向下的分支。网络的每个中间结果都是树上的节点,梯度在树上流动。现在的树分为静态树和动态树,paddlepaddle现在是动态树,就是你修改一个算子节点,会直接影响到其他的节点的结果。现在我们需要取网络模型的某个中间过程进行单独处理,就需要detah()将该数据从树上取下来,避免梯度流影响其他的算子结果。 如果照您的问法,我认为 detah()应该类似copy()的功能,没有单独开辟一块内存保存数据,区别就是不提供梯度的回溯。相对应的是clone(),与源张量不共享数据内存,但提供梯度的回溯。 如果对您有帮助,可以将该答案选为解决方案。
展开
2
收藏
回复
全部评论(3)
时间顺序
三岁
#2 回复于2021-11

返回一个新的Tensor,从当前计算图分离。

返回:与当前计算图分离的Tensor。

https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/Tensor_cn.html#detach

0
回复
玥亮
#3 回复于2021-11
三岁 #2
返回一个新的Tensor,从当前计算图分离。 返回:与当前计算图分离的Tensor。 https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/Tensor_cn.html#detach
展开

这个官方文档看了,但是不太明白。 请问计算图是什么 ??

0
回复
十进制到二进制
#4 回复于2021-12

我说一些个人的看法,帮助理解,仅供参考。

你可以将计算图理解成一棵树,从数据输入开始(根节点),每一层的卷积,池化操作,都是树向下的分支。网络的每个中间结果都是树上的节点,梯度在树上流动。现在的树分为静态树和动态树,paddlepaddle现在是动态树,就是你修改一个算子节点,会直接影响到其他的节点的结果。现在我们需要取网络模型的某个中间过程进行单独处理,就需要detah()将该数据从树上取下来,避免梯度流影响其他的算子结果。

如果照您的问法,我认为 detah()应该类似copy()的功能,没有单独开辟一块内存保存数据,区别就是不提供梯度的回溯。相对应的是clone(),与源张量不共享数据内存,但提供梯度的回溯。

如果对您有帮助,可以将该答案选为解决方案。

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户