Derin Öğrenme (Deep Learning) - Havuzlama Katmanları (Pooling Layers)

MaxPooling2D

Yayın tarihi :23-Şub-22
Bölüm kodlarını ve/veya veri setlerini indir.

MaxPooling2D, 2 boyutlu veriler için maksimum havuzlama işlemidir.

Genellille Conv2D evrişim katmanından sonra oluşan tensörlerden (giriş boyutu x giriş yüksekliği x giriş kanalları) giriş boyutu ve giriş yüksekliği değerlerinden maksimum değerin seçilmesi anlamına gelmektedir.

Kullanılabilmesi için "MaxPooling2D" kütüphanesinin içe aktarılması gerekmektedir.

from tensorflow.keras.layers import MaxPooling2D

Söz dizimi: MaxPooling2D(pool_size=(2,2), strides=None, padding="valid", data_format="channels_last", **kwargs)

  • pool_size, maksimum havuzlama penceresinin boyutunu temsil eder. Tam sayı değeri alır.
  • strides, havuzlama penceresinin ne kadar adımda hareket ettiğini temsil eder, tam sayı değeri alır. (Örn:(1,1))
  • padding, dolgu olup olmayacağını temsil eder. 2 farklı değer alır; "valid", "same" dır. Varsayılan olarak "valid" dir.
    • valid, dolgu olmadığını temsil eder.
    • same, çıktının girdi ile aynı yükseklik/genişlik boyutuna sahip olması için girdinin sağına/soluna veya yukarısınıa/aşağısına eşit olarak sıfır ekler.
  • data_format, bir veri formatından diğerine geçerken ağırlık sırasını korumak için esas olarak giriş boyutlarını sıralamak için kullanılır. İki farklı değer alabilir: "channels_last","channels_first". Varsayılan olarak "channels_last"dir.

Örnek-1: Bir model oluşturarak Conv2D katmanından sonra MaxPooling2D ile maksimum havuzlama işlemi uygulayalım.

from tensorflow.keras.layers import Dense,Conv2D,MaxPooling2D
from tensorflow.keras.models import Sequential
from tensorflow.keras.utils import plot_model
#Model tanımlanır.
model=Sequential()

#Giriş katmanı("input_shape" ile) ve giriş katmanı sonrasında Conv2D katmanı modele eklenir.
model.add(Conv2D(filters=20,
                 kernel_size=(3,3),
                 strides=(1,1),
                 padding="same",
                 activation="relu",
                 input_shape=(28,28,1)))

#MaxPooling2D katmanı eklenir
model.add(MaxPooling2D())

#1.Gizli katman modele eklenir.
model.add(Dense(units=6,activation="relu"))

#Çıkış katmanı eklendi
model.add(Dense(units=1,activation="sigmoid"))

Modelin grafiğini inceleyelim;

plot_model(model,show_shapes=True)

Çıktı:

Yukarıdaki grafikden de görüldüğü üzere MaxPooling2D katmanında (28,28,20) olan girdi boyutu katmanın pool_size değeri(havuzlama penceresi boyutu) (2,2) olduğu için bu alanların maksimum değerini alacak ve çıktı boyutu (14,14,20) olarak sonuçlanacaktır.

Örnek-2: Bir liste elemanlarına MaxPooling2D ile maksimum havuzlama işlemi uygulayalım ve sonuçları gözlemleyelim.

import tensorflow as tf
from tensorflow.keras.layers import MaxPooling2D
import numpy as np
#Liste tanımlanır
myList=np.random.randint(1,20,(1,4,4,1))

input_=tf.convert_to_tensor(myList)
print("Girdi boyutu:",input_.shape)
print("Girdi:",input_)
print("######################")

#MaxPooling2D tanımlanır
output_=MaxPooling2D(pool_size=(2,2))(input_)
print("Çıktı boyutu:",output_.shape)
print("Çıktı:",output_)

Çıktı:

Girdi boyutu: (1, 4, 4, 1)
Girdi: tf.Tensor(
[[[[ 3]
   [ 9]
   [13]
   [13]]

  [[11]
   [14]
   [15]
   [11]]

  [[15]
   [ 4]
   [ 4]
   [ 2]]

  [[12]
   [19]
   [ 1]
   [17]]]], shape=(1, 4, 4, 1), dtype=int32)
######################
Çıktı boyutu: (1, 2, 2, 1)
Çıktı: tf.Tensor(
[[[[14]
   [15]]

  [[19]
   [17]]]], shape=(1, 2, 2, 1), dtype=int32)
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.