Derin Öğrenme (Deep Learning) - Keras Çekierdek Katmanı (Core Layer)

Activation

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

Activation Layer((Aktivasyon/Etkinleştirme Katman), aktivasyon fonksiyonunu tanımlamak için kullanılan Yapay Sinir Ağları katmanıdır. Herhangi bir şekilde girdi veya çıktı katmanlarındaki nöron sayısını değiştirmez. Bir modele yeni bir katman olarak da eklenebilir veya ileri düzeydeki katmanlara argüman olarak da eklenebilir.

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

from tensorflow.keras.layers import Activation

Söz dizimi: Activation(activation, **kwargs)

  • activation, kullanılacak olan aktivasyon fonksiyonunu temsil etmektedir.

Yukarıdaki parametre haricinde eğer modelde ilk katman olarak kullanılıyorsa input_shape adlı bir argümanı da kullanır. input_shape argümanı giriş katmanının boyutunu belirtmek için kullanılan, sayısal değer alan bir yapıdır.

Örnek-1: Bir listenin "Aktivasyon Katmanı" sonrasında nasıl dönüşüm sağladığını inceleyelim. Bunun için 3 farklı aktivasyon fonksiyonu kullanalım.

#Gerekli kütüphane içe aktarılır.
from tensorflow.keras.layers import Activation
#Girdi listesi
input_=[-5.0,3.0,4.0,-12.0,0.0,6.0,-28.0]

#Activation katmanları
layer_1=Activation("relu")
layer_2=Activation("sigmoid")
layer_3=Activation("tanh")

print("output_relu:",list(layer_1(input_).numpy()))
print("output_sigmoid:",list(layer_2(input_).numpy()))
print("output_tanh:",list(layer_3(input_).numpy()))

Çıktı:

output_relu: [0.0, 3.0, 4.0, 0.0, 0.0, 6.0, 0.0]
output_sigmoid: [0.0066928566, 0.95257413, 0.98201376, 6.1442124e-06, 0.5, 0.99752736, 6.9144e-13]
output_tanh: [-0.99990916, 0.9950547, 0.9993292, -1.0, 0.0, 0.99998784, -1.0]

Bir girdinin aktivasyon katmanı sonrasında çıkan değerleri yorumlamak gerekirse;

  • relu, 0 dan küçük değerleri 0 olarak, 0 dan büyük değerlerin kendisini döndürür. Output_relu'da görüldüğü üzere 0 dan küçük değerler 0, diğer değerler kendisi olarak döndü.
  • sigmoid, tüm değerleri 0-1 aralığında döndürür. Output_sigmoid'de görüldüğü üzere liste değerleri 0-1 aralığında listelendi.
  • tanh, tüm değerleri -1 ve 1 aralığında döndürür. Output_tanh'da görüldüğü üzere liste değerleri -1 ve 1 aralığında listelendi.

Aktivasyon katmanının yukarıda da bahsedildiği gibi bir model içinde 2 farklı kullanım şekli bulunmaktadır.

1.Yöntem: Katman olarak kullanma

#Kütüphaneler içe aktarılır.
from tensorflow.keras.layers import Dense,Activation
from tensorflow.keras.models import Sequential
from tensorflow.keras.utils import plot_model
#Model tanımlanır.
model=Sequential()

#Dense katmanı oluşturulur.
layer_1=Dense(
    units=12,
    input_shape=(6,),
    kernel_initializer="glorot_uniform")

#Activation katmanı oluşturulur.
layer_act=Activation(activation="relu")

#Oluşturulan katmanlar modele eklenir
model.add(layer_1)
model.add(layer_act)

Model grafiğini gözlemleyelim;

plot_model(model,show_shapes=True)

Çıktı:

Modelin özetini inceleyelim;

model.summary()

Çıktı:

Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 12)                84        
                                                                 
 activation (Activation)     (None, 12)                0         
                                                                 
=================================================================
Total params: 84
Trainable params: 84
Non-trainable params: 0

Model özetinde de görüldüğü gibi herhanbi bir parametre değeri bulunmamakta ve düğüm sayısına da bir etkisi bulunmamaktadır.

2.Yöntem: İleri seviye bir katmanda argüman olarak kullanma

​#Kütüphaneler içe aktarılır.
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential
from tensorflow.keras.utils import plot_model
#Model tanımlanır.
model=Sequential()

#Activation argümanı ekleyerek Dense katmanı oluşturulur.
layer_1=Dense(
    units=12,
    input_shape=(6,),
    activation="relu",
    kernel_initializer="glorot_uniform")

#Oluşturulan katman modele eklenir
model.add(layer_1)

Model grafiğini gözlemleyelim;

plot_model(model,show_shapes=True)

Çıktı:

Grafikte görüldüğü gibi argüman olarak eklendiğinde herhangi bir yeni katman oluşturmadı ama arka planda aktivasyon fonksiyonu yine çalışır durumdadır.

Modelin özetini inceleyelim;

model.summary()

Çıktı:

Model: "sequential_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_1 (Dense)             (None, 12)                84        
                                                                 
=================================================================
Total params: 84
Trainable params: 84
Non-trainable params: 0

Aynı grafikte de olduğu gibi modelin özetinde de bir değişiklik meydana getirmemiş oldu. Model içinde kullanıldığını görebilmek için;

model.get_config()

Çıktı:

{'name': 'sequential_1',
 'layers': [{'class_name': 'InputLayer',
   'config': {'batch_input_shape': (None, 6),
    'dtype': 'float32',
    'sparse': False,
    'ragged': False,
    'name': 'dense_1_input'}},
  {'class_name': 'Dense',
   'config': {'name': 'dense_1',
    'trainable': True,
    'batch_input_shape': (None, 6),
    'dtype': 'float32',
    'units': 12,
    'activation': 'relu',
    'use_bias': True,
    'kernel_initializer': {'class_name': 'GlorotUniform',
     'config': {'seed': None}},
    'bias_initializer': {'class_name': 'Zeros', 'config': {}},
    'kernel_regularizer': None,
    'bias_regularizer': None,
    'activity_regularizer': None,
    'kernel_constraint': None,
    'bias_constraint': None}}]}
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.