Pytorch实用教程:Pytorch中 ‘tensor‘ 和 ‘tensor.data‘ 的区别是什么

在 PyTorch 中,Tensor 对象是库的核心,用于存储数据和梯度,同时支持自动求导。

当我们讨论 PyTorch Tensor 和它的 .data 属性时,我们涉及到 PyTorch 的早期版本(特别是在 0.4.0 版本之前),那时自动求导机制和 Tensor 的表示方式与现在有所不同。

Tensor 变量

  • 在 PyTorch 1.0 及以后的版本中,Tensor 是一个多维数组,它自带了自动求导的功能。这意味着 PyTorch 可以自动跟踪、计算和更新Tensor的梯度,这对于深度学习模型的训练是非常重要的。

  • 你可以通过设置 requires_grad 标志来指定是否需要对某个 Tensor 求导。

    import torch
    
    x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
    
  • 当进行操作(如加、减、乘、除等)产生新的 Tensor 时,PyTorch 会自动构造计算图,这样就可以利用链式法则进行梯度的反向传播。

Tensor.data

  • .data 是一个历史遗留属性,它返回与当前 Tensor 相同数据的 Tensor,但不会被自动求导系统追踪。这意味着,对 .data 的操作不会被记录在计算图中,因此不会影响梯度计算。
  • 在早期的 PyTorch 版本中,.data 被用来访问 Tensor 的原始数据,同时绕过自动求导,但这样做容易导致难以追踪的错误,因为计算图被“短路”了。

当前建议

  • 避免使用 .data:从 PyTorch 0.4.0 开始,强烈建议不要再使用 .data 属性,因为它可能导致计算图的不正确构建,从而影响梯度的计算和模型的训练。如果你需要修改 Tensor 而不影响梯度计算,可以使用 .detach() 方法,这样可以安全地获取不需要梯度的新 Tensor

    y = x.detach()
    
  • .detach() 用法.detach() 创建了一个新的 Tensor,它与原始 Tensor 共享数据但不需要梯度。这对于实现一些需要操作梯度的 Tensor 但又不希望这些操作被记录(例如,权重更新)的算法非常有用。

应避免使用 .data,因为这可能会导致计算图不正确,而应该使用 .detach() 来获取不追踪梯度的 Tensor 副本,这是一种更安全和更符合当前 PyTorch 设计的做法。

相关推荐

  1. 【水】pytorch:torch.reshapetorch.Tensor.view区别

    2024-04-11 13:54:02       43 阅读
  2. Pytorch实用教程: torch.tensor()用法

    2024-04-11 13:54:02       15 阅读
  3. PyTorch TensorPyTorch Tensor编程教学:基础与实战

    2024-04-11 13:54:02       21 阅读
  4. PytorchTensor类型对应表

    2024-04-11 13:54:02       10 阅读
  5. Pytorch简介】2.What are Tensors 什么张量?

    2024-04-11 13:54:02       35 阅读
  6. Pytorch实用教程tensor.size()用法 | .squeeze()方法

    2024-04-11 13:54:02       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-11 13:54:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-11 13:54:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-11 13:54:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-11 13:54:02       20 阅读

热门阅读

  1. 【SQL】mysql数学函数功能介绍并举例

    2024-04-11 13:54:02       14 阅读
  2. python之迭代

    2024-04-11 13:54:02       11 阅读
  3. 七彩之城的独特序列(蓝桥杯)

    2024-04-11 13:54:02       15 阅读
  4. SpringCloudAlibaba-整合gateway(五)

    2024-04-11 13:54:02       15 阅读
  5. opencv使用滑动窗口提取GLCM特征做svm图像分类

    2024-04-11 13:54:02       13 阅读
  6. uniapp实现文件和图片选择上传功能实现

    2024-04-11 13:54:02       13 阅读
  7. Linux 系统如何设置免密登录

    2024-04-11 13:54:02       17 阅读
  8. 山东济南教育投稿邮箱与投稿信箱

    2024-04-11 13:54:02       16 阅读