gpt4 book ai didi

python - 为什么我在 forward 函数中定义的张量不能自动转换为 cuda 变量?

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:49 33 4
gpt4 key购买 nike

在 PyTorch 中,在模型的 forward 函数中

class my_model(torch.nn.module):

......

def forward():
self.a=torch.zeros(1)
#blabla

model.cuda()之后,为什么self.a还是一个cpu变量?

最佳答案

这是设计使然。

只有作为模型一部分的张量才会随 model.cuda()model.to("cuda") 移动。

这些张量使用 register_parameterregister_buffer 注册。这还包括使用上述函数注册的子模块、参数和缓冲区。

尽管 self.a=torch.zeros(1) 实际上是类本身的一部分,但根据设计它不会被移动到 CUDA,相反你需要做 a.to("cuda"),如果您还没有使用 register* 方法。

关于python - 为什么我在 forward 函数中定义的张量不能自动转换为 cuda 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57570793/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com