首页 > 解决方案 > 为什么通过克隆删除张量对象属性?

问题描述

我正在尝试在 pytorch 中克隆一个张量,并且还想克隆张量属性。这是一个例子:

import torch
from torch import nn

a = nn.Parameter(torch.rand(1))
a.adapt = True                      # define tensor attribute

b = a.clone()                       # clone

在上面的例子中,我想print(b.adapt)返回True;但是,我收到以下错误:

Traceback (most recent call last):
  File "scratch.py", line 13, in <module>
    print(b.adapt)
AttributeError: 'Tensor' object has no attribute 'adapt'

我想知道为什么通过克隆删除张量对象属性以及如何解决这个问题。

标签: pytorch

解决方案


该函数torch.Tensor.clone执行张量数据的副本,而不是 Python 对象的副本。这就是为什么 的 adapt 属性在a上不可用的原因b。此外,它将grad_fn在新创建的张量上保持不变:


推荐阅读