核心要点
张量是多维数组,含 data、dtype、device、requires_grad
理解标量/向量/矩阵是高维张量特例
知道与 NumPy 的互操作
能说明 GPU 张量与 Autograd 关系
标准回答
一、先给出结论和背景
- PyTorch 张量(Tensor):是框架的核心数据结构——广义上的多维数组,标量(0 维)、向量(1 维)、矩阵(2 维)都是其特例。
- 关键属性:| 属性 | 含义 |
|------|------|
| .shape / .size() | 各维大小 |
| .dtype | float32、int64 等 |
| .device | cpu / cuda:0 |
| requires_grad | 是否参与 Autograd |
| .grad | 反向后的梯度 |
二、拆开关键步骤和判断点
- 创建:torch.tensor()、torch.zeros()、torch.randn();从 NumPy:torch.from_numpy(arr)(共享内存)。
- 运算:重载 +、、@* 等,底层可 dispatch 到 CPU/GPU;广播机制与 NumPy 类似。
三、补上落地边界和取舍
面试里不要只停在公式或名词,可以补 PyTorch 中的张量Tensor是什么 对训练稳定性、泛化、收敛速度或显存/算力的影响。再说明一个常见调参或排错场景,面试官会更容易判断你真的用过这些方法。
回答思路
【定义】用一句话说清「PyTorch 中的张量(Tensor)」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:混淆 Tensor 与 Variable(0.4 后已合并);GPU 张量直接 .numpy() 报错需先 .cpu();inplace 操作破坏 Autograd 需小心。
追问
追问 1:torch.tensor 和 torch.from_numpy 区别?
from_numpy 与 NumPy 共享内存,改其一影响另一;tensor() 会拷贝。from_numpy 得到的张量默认 requires_grad=False,需手动设置参与训练。
追问 2:view 和 reshape 有何注意?
reshape 必要时拷贝;view 要求内存连续,否则先 contiguous()。展平常用 x.view(x.size(0), -1)。
追问 3:dtype 选 float32 还是 float64?
深度学习默认 float32,GPU 友好;float64 更精但慢且占显存。推理可用 float16/bfloat16 混合精度加速。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
