为什么通过克隆删除张量对象属性?

Why tensor object attributes are removed by cloning?

我正在尝试在 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)到returnTrue;但是,我收到以下错误:

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

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

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