BaşlayınÜcretsiz başlayın

U-Net oluşturma: katman tanımları

Bu ve sonraki egzersizde, sıfırdan bir U-Net mimarisi kuracaksın. Burada, modelin kullanacağı katmanları ve katman bloklarını tanımlayacağın __init__() metodunu yazmaya başlayacaksın.

Encoder ve transpoze evrişim (transposed convolution) senin için zaten tanımlandı. Geriye decoder’ın evrişimsel blokları kaldı. Atlama bağlantılarını (skip connections) dikkate alarak her birine uygun giriş ve çıkış kanal sayılarını geçirmen gerekiyor.

İlk blok olan dec1, girdi olarak upconv3 çıktısının enc3 çıktısıyla birleştirilmesini alacak. Sırasıyla, dec1 çıktısı enc3 çıktısına eşit olmalı. Tüm eksik giriş ve çıkış boyutlarını doldurabilir misin?

Bu egzersiz, kursun bir parçasıdır

PyTorch ile Görüntüler için Deep Learning

Kursa Göz Atın

Egzersiz talimatları

  • Decoder’daki üç evrişimsel bloğu, her biri için uygun giriş ve çıkış kanal sayılarını geçirerek tanımla.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

class UNet(nn.Module):
    def __init__(self, in_channels, out_channels):
        super(UNet, self).__init__()

        self.enc1 = self.conv_block(in_channels, 64)
        self.enc2 = self.conv_block(64, 128)
        self.enc3 = self.conv_block(128, 256)
        self.enc4 = self.conv_block(256, 512)

        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)

        self.upconv3 = nn.ConvTranspose2d(512, 256, kernel_size=2, stride=2)
        self.upconv2 = nn.ConvTranspose2d(256, 128, kernel_size=2, stride=2)
        self.upconv1 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2)
        
        # Define the decoder blocks
        self.dec1 = self.conv_block(____, ____)
        self.dec2 = self.conv_block(____, ____)
        self.dec3 = self.conv_block(____, ____)

        self.out = nn.Conv2d(64, out_channels, kernel_size=1)
Kodu Düzenle ve Çalıştır