Pytorch中 CPU tensor vs GPU tensor
- 核心区别

- 设备互相转移代码
python
# CPU张量
t_cpu = torch.tensor([1,2,3])
# CPU → GPU
t_gpu = t_cpu.to("cuda")
# 或者 t_gpu = t_cpu.cuda()
# GPU → CPU
t_cpu2 = t_gpu.to("cpu")
# 或者 t_cpu2 = t_gpu.cpu()
3. 重要规则
- 张量运算必须在同一设备 :CPU 张量 和 GPU 张量 不能直接加减乘,会抛出设备不匹配报错。
- 数据传输有开销:CPU ↔ GPU 拷贝数据会消耗时间,深度学习训练要尽量减少来回拷贝。
.item():不管 CPU/GPU 的单元素张量,都可以用.item()取出 Python 数值;但.numpy()只能用于 CPU 张量。
4. 使用场景
- CPU tensor:数据读取、预处理、小规模计算、结果可视化、和 numpy 交互。
- GPU tensor:神经网络前向传播、反向传播、模型训练(大量矩阵并行运算)。
一句话总结:只是存放的内存位置和运算硬件不一样,张量 API 基本一致,但不能跨设备直接计算,数据搬运有代价。