| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档详细讲解了PyTorch中张量的索引与切片操作,包括基本索引、切片、扁平索引、掩码选择以及特定维度的索引选择。通过多个代码示例展示了不同索引方法的实现及其对张量形状的影响,涵盖了从简单的单元素访问到复杂的多维度操作。 | ||
| AI总结 | ||
以下是对文档内容的总结:
本文档主要介绍了PyTorch中张量的索引与切片操作,涵盖了多种索引方法及其应用场景,以下是核心内容的总结:
---
### **1. 基本索引与切片**
- **索引操作**:
- 通过逗号分隔的索引可以逐步访问张量的不同维度。
- 示例:
```python
a = torch.rand(4, 3, 28, 28)
a[0].shape # 输出:torch.Size([3, 28, 28])
a[0, 0].shape # 输出:torch.Size([28, 28])
a[0, 0, 2, 4] # 输出:tensor(0.8082)
```
- **切片操作**:
- 支持对张量的不同维度进行切片,使用`...`表示省略其他维度。
- 示例:
```python
a[:, 1, ...].shape # 输出:torch.Size([4, 28, 28])
a[..., 2].shape # 输出:torch.Size([4, 3, 28, 2])
a[:, :, 2, ::2].shape # 输出:torch.Size([4, 3, 14, 14])
```
---
### **2. 基于掩码的选择**
- 使用`masked_select()`函数根据掩码选择张量中的元素。
- 示例:
```python
x = torch.randn(3, 4)
mask = x.ge(0.5) # 生成大于等于0.5的元素掩码
torch.masked_select(x, mask) # 输出:tensor([0.5404, 0.6040, 1.5771])
torch.masked_select(x, mask).shape # 输出:torch.Size([3])
```
---
### **3. 基于扁平索引的选择**
- 使用`torch.take()`函数根据扁平索引选择张量中的元素。
- 示例:
```python
src = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8])
torch.take(src, torch.tensor([0, 2, 6, 0])) # 输出:tensor([4, 5, 8])
```
---
### **4. 基于特定索引的选择**
- 使用`index_select()`函数根据特定索引选择张量中的元素。
- 示例:
```python
a = torch.rand(4, 3, 28, 28)
a.index_select(0, torch.tensor([0])) # 选择第0个样本
a.index_select(1, torch.tensor([0])) # 选择第0个通道
a.index_select(2, torch.arange(28)).shape # 输出:torch.Size([4, 3, 28, 28])
a.index_select(2, torch.arange(8)).shape # 输出:torch.Size([4, 3, 8, 28])
```
---
### **总结**
文档详细介绍了PyTorch张量的索引与切片操作,包括基本索引、切片、基于掩码的选择、基于扁平索引的选择以及基于特定索引的选择等方法,并通过多个示例展示了这些操作的实际应用。这些操作是PyTorch中常用的数据处理技巧,能够帮助用户更高效地操作和处理张量数据。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
3 页请下载阅读 -
文档评分














深度学习与PyTorch入门实战 - 08. 索引与切片