引言
索引
1 |
In[3]: a = torch.rand(4,3,28,28) |
切片
- 顧頭不顧尾
1 |
In[7]: a.shape |
步長
- 顧頭不顧尾 + 步長
start : end : step
- 對於步長為1的,通常就省略了。
1 |
a[:,:,0:28,0:28:2].shape # 隔點采樣 |
具體的索引
.index_select(dim, indices)
- dim為維度,indices是索引序號
- 這里的indeces必須是tensor ,不能直接是一個list
1 |
In[17]: a.shape |
...
...
表示任意多維度,根據實際的shape來推斷。- 當有
...
出現時,右邊的索引理解為最右邊 - 為什么會有它,沒有它的話,存在這樣一種情況 a[0,: ,: ,: ,: ,: ,: ,: ,: ,: ,2] 只對最后一個維度做了限度,這個向量的維度又很高,以前的方式就不太方便了。
1 |
In[23]: a.shape |
使用mask來索引
.masked_select()
- 求掩碼位置原來的元素大小
- 缺點:會把數據,默認打平(flatten),
1 |
In[31]: x = torch.randn(3,4) |
使用打平(flatten)后的序列
- torch.take(src, torch.tensor([index]))
- 打平后,按照index來取對應位置的元素
1 |
In[39]: src = torch.tensor([[4,3,5],[6,7,8]]) # 先打平成1維的,共6列 |