Reshape
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 16/78
- 5 dk
reshape() ve view() ile tensor boyutu değiştirilir.
Reshape ve view
reshape ve view eleman sayısını koruyarak şekli değiştirir; -1 boyutu otomatik hesaplatır. view yalnızca bellekte bitişik tensörlerde çalışır ve her zaman veriyi paylaşır; reshape gerekirse kopyalar:
x = torch.arange(12)
print(x.view(3, 4).shape) # torch.Size([3, 4])
print(x.reshape(2, -1).shape) # torch.Size([2, 6])
img = torch.zeros(32, 1, 28, 28)
print(img.view(32, -1).shape) # torch.Size([32, 784]): düzleştirmeŞüphedeysen reshape kullan; her durumda çalışır.
Transpoz ve permute
transpose(a, b) iki ekseni, permute tüm eksenlerin sırasını değiştirir. Görüntüler NumPy/PIL'de (yükseklik, genişlik, kanal), PyTorch'ta (kanal, yükseklik, genişlik) düzenindedir:
hwc = torch.zeros(28, 28, 3)
chw = hwc.permute(2, 0, 1)
print(chw.shape) # torch.Size([3, 28, 28])
print(chw.is_contiguous()) # False: view yerine reshape gerekebilirpermute sonrası tensör bitişik olmaz; .contiguous() ile düzeltilir.
Uygulama Görüntü şekilleri
(4, 28, 28, 3) şekilli bir HWC görüntü grubunu permute(0, 3, 1, 2) ile NCHW'ye çevir ve şeklini yazdır. Ardından bunu reshape(4, -1) ile düzleştirip şeklini, son olarak x.flatten(1) sonucunun şekliyle aynı olduğunu yazdır.
Başlangıç kodu
import torch
nhwc = torch.zeros(4, 28, 28, 3)
# buraya yazÖrnek çözüm
import torch
nhwc = torch.zeros(4, 28, 28, 3)
x = nhwc.permute(0, 3, 1, 2)
print(x.shape)
d = x.reshape(4, -1)
print(d.shape)
print(d.shape == x.flatten(1).shape)Beklenen çıktı
torch.Size([4, 3, 28, 28]) torch.Size([4, 2352]) True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 (8, 3, 4, 4) şekilli tensörde <code>x.view(8, -1)</code> hangi şekli verir?
- (8, 48) Doğru cevap
- (8, 12)
- (8, 3)
- (384,)
Açıklama: 3 × 4 × 4 = 48; toplu boyut korunur.
2 Görüntüyü HWC'den CHW'ye çevir.
chw = hwc.____(2, 0, 1)
chw = hwc.permute(2, 0, 1)
Açıklama: permute eksenlerin yeni sırasını alır.
3 İşlemleri eşleştir.
| Kavram | Anlamı |
|---|---|
view |
Paylaşımlı yeniden şekil |
reshape |
Gerekirse kopyalar |
permute |
Eksen sırası |
flatten(1) |
Toplu boyut dışını düzleştirir |