深度学习入门文档深度页
Tensor 的形状、dtype 与 device
正确改变形状、轴、类型和设备,避免静默广播和不兼容运算。
学习目标
- 区分 reshape/permute
- 正确 NCHW
- 匹配标签 dtype
为什么需要这个概念
很多模型错误来自 shape/dtype/device,而不是网络结构。
- 数据契约基础
- 减少静默错误
学习前需要掌握
PyTorch Tensor内容待补充
背景与问题
很多模型错误来自 shape/dtype/device,而不是网络结构。
概念定义
reshape 改形状,permute 换轴,to 改 device/dtype,cat 拼已有轴,stack 新建轴。
直观理解
形状说明每个轴是谁,设备说明张量在哪,dtype 说明它能表达什么。
核心原理
参与同一运算的张量需兼容设备与类型;广播前检查预期形状。
无参数 squeeze 可能在 batch=1 时删除 batch 维。
数学表达
核心公式
reshape 必须保持元素总数。
变量含义
Nbatch 轴C通道轴
计算步骤
- 1permute(0,3,1,2)
代码对应位置
示例 1Tensor 的形状、dtype 与 device · PyTorch 示例:验证Tensor 的形状、dtype 与 device的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
N | batch 轴 |
C | 通道轴 |
完整数值示例
NHWC 转 NCHW
已知条件
- [8,32,32,3]
- 1
permute(0,3,1,2)
[8,3,32,32]
处理前后对比
计算与实现步骤
- 1
打印 shape/dtype/device
- 2
换轴
- 3
reshape
- 4
移动设备
- 5
断言
代码实现
示例 1
Tensor 的形状、dtype 与 device · PyTorch 示例
Tensor 的形状、dtype 与 device · PyTorch 示例
PyTorch
example_01.py用途:验证Tensor 的形状、dtype 与 device的输入、计算和输出。
x=torch.randn(8,32,32,3)
y=x.permute(0,3,1,2).to(dtype=torch.float32)
print(y.shape,y.dtype)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证Tensor 的形状、dtype 与 device的输入、计算和输出。
y- 目标标签或连续目标值。
Step 1 · 1–3 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
x=torch.randn(8,32,32,3)
y=x.permute(0,3,1,2).to(dtype=torch.float32)
print(y.shape,y.dtype)预期输出或运行结果
[8,3,32,32] float32。
常见错误 · 5 条
- reshape 当换轴
- 设备不一致
- CE 标签 float
- 无参 squeeze
- 确认样本轴、特征轴以及 X 与 y 的第一维完全对应。
实际应用
- CNN 输入
- 序列 batch
常见错误
reshape 当换轴
设备不一致
CE 标签 float
无参 squeeze
文档来源
10_PyTorch张量与模块基础原始文档
学习资料/deeplearning/10_PyTorch张量与模块基础.md- §3 dtype
- §4 device
- §6 reshape
- §7 permute
- §8 广播
常见问题
view 为何会失败?
非连续内存需 contiguous 或 reshape。
to 是否原地?
通常返回张量,应重新赋值。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。