搜索

pdf文档 深度学习与PyTorch入门实战 - 11. 合并与分割

974.80 KB 10 页 1 下载 43 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档介绍了PyTorch中张量的拼接与拆分操作,包括Cat、Stack、Split和Chunk等方法。通过示例代码展示了如何沿着不同维度进行张量的合并与分割,并讨论了张量大小不匹配时的错误处理。文档重点讲解了如何使用dim参数指定合并维度,以及如何通过Split和Chunk实现张量的拆分操作。
AI总结
## 总结 本节内容主要介绍了PyTorch中张量的拼接与拆分操作,重点讲解了`cat`、`stack`、`split`和`chunk`等常用方法,并通过代码示例展示了它们的使用场景和注意事项。以下是核心内容的总结: ### 1. `torch.cat`:拼接张量 - **功能**:沿指定维度拼接多个张量。 - **示例**: - `a = torch.rand(4,32,8)`,`b = torch.rand(5,32,8)` - `torch.cat([a, b], dim=0).shape` 结果为 `torch.Size([9, 32, 8])`。 - **特点**: - 拼接后的张量在指定维度的长度为输入张量在该维度长度的总和。 - 常用于批量数据的拼接。 ### 2. `torch.stack`:堆叠张量 - **功能**:在新维度上堆叠多个张量,生成一个新的张量。 - **示例**: - `a = torch.rand(32, 8)`,`b = torch.rand(32, 8)` - `torch.stack([a, b], dim=0).shape` 结果为 `torch.Size([2, 32, 8])`。 - **特点**: - 输入张量的形状必须一致(除了堆叠的新维度)。 - 常用于将多个张量沿新维度堆叠。 ### 3. `torch.split`:拆分张量 - **功能**:沿指定维度将张量拆分成多个张量。 - **示例**: - `c = torch.stack([a, b], dim=0)`,`c.shape` 为 `torch.Size([2, 32, 8])`。 - `aa, bb = c.split([1, 1], dim=0)`,结果为 `aa.shape` 和 `bb.shape` 均为 `torch.Size([1, 32, 8])`。 - **注意事项**: - 拆分的大小需与张量在指定维度的长度匹配,否则会报错。 - 例如,尝试将长度为1的张量拆分成2部分会导致错误:`ValueError: not enough values to unpack (expected 2, got 1)`。 ### 4. `torch.chunk`:分割张量 - **功能**:将张量沿指定维度分割成指定数量的等分。 - **示例**: - `c = torch.stack([a, b], dim=0)`,`c.shape` 为 `torch.Size([2, 32, 8])`。 - `aa, bb = c.chunk(2, dim=0)`,结果为 `aa.shape` 和 `bb.shape` 均为 `torch.Size([1, 32, 8])`。 - **特点**: - 分割后的张量在指定维度的长度为输入张量在该维度长度的等分。 - 常用于将张量均匀分割。 ### 5. `cat`与`stack`的区别 - **`cat`**:沿指定维度拼接张量,要求输入张量在该维度外的其他维度形状一致。 - **`stack`**:在新维度堆叠张量,要求输入张量形状一致(除了堆叠的新维度)。 ### 总结 - **`cat`**:用于沿指定维度拼接张量,常用于批量数据的拼接。 - **`stack`**:用于在新维度堆叠张量,常用于将多个张量沿新维度堆叠。 - **`split`**:用于沿指定维度拆分张量,需注意拆分大小与张量长度匹配。 - **`chunk`**:用于将张量沿指定维度分割成指定数量的等分,常用于均匀分割张量。 这些操作在深度学习模型的构建和数据处理中非常常用,掌握它们的使用方法和注意事项对PyTorch编程非常有帮助。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 3 页请下载阅读 -
文档评分
请文明评论,理性发言.
分享用户
copilot
文档
文章
码力
个性签名
暂无个性签名