在Google Colab中迁移Tensor至CUDA GPU失败的问题排查
问题原因与解决方法
核心错误点
PyTorch的cuda()方法不会原地修改原张量——它会生成并返回一个迁移到GPU的新张量实例。你之前仅调用X_digits_train.cuda()却未将返回值重新赋值给原变量,因此原张量始终保留在CPU上,is_cuda自然返回False。
正确实现方式
方式1:重新赋值迁移后的张量
把cuda()或to()方法返回的新张量重新赋值给原变量:
# 直接用cuda()方法 X_digits_train = X_digits_train.cuda() # 或者用你定义的device变量,适配CPU/GPU切换场景 X_digits_train = X_digits_train.to(device)
方式2:创建张量时直接指定设备
如果从numpy数组转张量时就想直接放到GPU,可以在创建阶段指定device参数:
X_digits_train = torch.tensor(X_digits_train, dtype=torch.float32, device=device)
验证修改结果
执行上述操作后,再次检查设备状态:
print(X_digits_train.is_cuda) # 输出True print(X_digits_train.device) # 输出cuda设备信息(如cuda:0)
内容的提问来源于stack exchange,提问作者Charles W
相关产品推荐
相关产品推荐

