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

AveragePooling1D

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

AveragePooling1D, 1 boyutlu zamansal veriler için ortalama havuzlama işlemidir.

Ortalama Havuzlama işlemi nedir?

Genellille Conv1D evrişim katmanından sonra oluşan 2 boyutlu tensörlerden (giriş boyutu x giriş kanalları) giriş boyutu değerlerinden ortalama değerin seçilmesi anlamına gelmektedir.

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

from tensorflow.keras.layers import AveragePooling1D

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

  • pool_size, ortalama 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. 
  • 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 Conv1D katmanından sonra AveragePooling1D ile ortalama havuzlama işlemi uygulayalım.

import tensorflow as tf
from tensorflow.keras.layers import Dense,Conv1D,AveragePooling1D
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 Conv1D katmanı modele eklenir.
model.add(Conv1D(filters=20,
                 kernel_size=3,
                 strides=1,
                 padding="same",
                 activation="relu",
                 input_shape=(8,32)))

model.add(AveragePooling1D(pool_size=2,
                      padding="same"))

#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 AveragePooling1D katmanında 8 olan girdi boyutu katmanın pool_size değeri(havuzlama penceresi boyutu) 2 olduğu için 2 alanın ortalama değerini alacak ve çıktı boyutu 4 olarak sonuçlanacaktır.

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

import tensorflow as tf
from tensorflow.keras.layers import AveragePooling1D
#Liste tanımlanır ve 1x8x1 boyutlandırma işlemi yapılır
x=tf.convert_to_tensor([1,2,3,4,5,6,7,8],"float32")
input_=tf.reshape(x,[1,8,1])
print("Girdi boyutu:",input_.shape)
print("Girdi:",input_)
print("######################")

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

Çıktı:

Girdi boyutu: (1, 8, 1)
Girdi: tf.Tensor(
[[[1.]
  [2.]
  [3.]
  [4.]
  [5.]
  [6.]
  [7.]
  [8.]]], shape=(1, 8, 1), dtype=float32)
######################
Çıktı boyutu: (1, 4, 1)
Çıktı: tf.Tensor(
[[[1.5]
  [3.5]
  [5.5]
  [7.5]]], shape=(1, 4, 1), dtype=float32)

Sonuç değerleri incelendiğinde AveragePooling1D katmanında 8 olan girdi boyutu katmanın pool_size değeri(havuzlama penceresi boyutu) 2 olduğu için 2'li olarak değerleri gruplandırarak ortalama değerleri döndürdü.

  • [1,2] - 1.5
  • [3,4] - 3.5
  • [5-6] - 5.5
  • [7-8] - 7.5 değerlerini döndürmüş oldu.
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.