pytorch - 为什么通过克隆删除张量对象属性?
问题描述
我正在尝试在 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'
我想知道为什么通过克隆删除张量对象属性以及如何解决这个问题。
解决方案
该函数torch.Tensor.clone
执行张量数据的副本,而不是 Python 对象的副本。这就是为什么 的 adapt 属性在a
上不可用的原因b
。此外,它将grad_fn
在新创建的张量上保持不变:
推荐阅读
- java - http 调用应该发生在 MVC 中的哪一部分?
- authorize.net - Authorize.net Accept.dispatchData(secureData, responseHandler) 的 Accep.js 有 API 版本吗?
- azure-active-directory - 如何正确配置 ASP.NET Core 5 Swagger 以使用 Azure A/D 授权代码身份验证?
- javascript - 为什么 GraphQL 错误:createReadStream 不是函数
- react-admin - react-admin 链接参考输入
- mobile - UI更改在我的Android手机中不可见
- javascript - 函数在承诺结果之前返回?
- azure - Kudu 尝试从旧的 Azure 分支分支进行 Zip 部署
- c# - 如何使用 View 中的文本框值在 Viewmodel 中添加对象?
- css - :active 状态在滚动时过早激活