序言
- .detach()和.data都可以用来分离tensor数据,下面进行比较
- pytorch0.4及之后的版本,.data仍保留,但建议使用.detach()
相同点
- x.detach()和x.data返回和x相同数据的tensor,这个新的tensor和原来的tensor共用数据,一者改变,另一者也会跟着改变
- 新分离得到的tensor的requires_grad = False, 即不可求导的
不同点
- (1) .data是一个属性,.detach()是一个方法
- (2) x.data不能被autograd追踪求微分,即使被改了也能错误求导;x.detach()也不能被autograd追踪求微分,被改了会直接报错,避免错误的产生
- (3) .data是不安全的,.detach()是安全的
测试实例
-
.data测试
import torch a = torch.tensor([1 ,2 ,3.], requires_grad = True) # float类型,支持求导 out = a.sigmoid(