CNN Visualization

Kategori: Deep Learning , 14 Nisan 2020 , JanFranco


Bir CNN modeli oluşturup, train ettikten sonra, aktivasyon fonksiyonundan geçen outputları görüntülemek istersek vis kütüphanesini kullanabiliriz. İlk olarak kütüphaneleri import edelim:


from vis.visualization import visualize_activation
from vis.utils import utils
from keras import activations
from matplotlib import pyplot as plt
Görüntüleyeceğimiz katmanı bulmak için find_layer_idx methodunu kullanabiliriz. Modeli oluşturduğumuzda son katmanın ismi dense_2 idi. İsimleri kendimiz verebiliriz ancak bu durumda vermediğimiz için model otomatik olarak bir isim oluşturmuş:


layer_idx = utils.find_layer_idx(model, 'dense_2')
Son olarak aşağıdaki methodları uygulayalım:


model.layers[layer_idx].activation = activations.linear
model = utils.apply_modifications(model)

for output_idx in np.arange(10):
  img = visualize_activation(model, layer_idx, filter_indices=output_idx, input_range=(0., 1.))
  plt.figure()
  plt.title('Networks perception of {}'.format(output_idx))
  plt.imshow(img[..., 0])

>>






Bu görüntüler neyi anlatıyor? Örneğin ilk görüntüyü incelediğimizde, bir el yazısının 0 olarak tanımlanabilmesi için nasıl özellikleri olması gerektiğini görüyoruz. Şimdi de filtrelerin etkisini görelim:


from keras.models import Model
layer_outputs = [layer.output for layer in model.layers[:9]]
activation_model = Model(inputs=model.input, outputs=layer_outputs)
activations = activation_model.predict(x_train[1567].reshape(1,28,28,1))
 
def display_activation(activations, col_size, row_size, act_index): 
    activation = activations[act_index]
    activation_index=0
    fig, ax = plt.subplots(row_size, col_size, figsize=(row_size*2.5,col_size*1.5))
    for row in range(0,row_size):
        for col in range(0,col_size):
            ax[row][col].imshow(activation[0, :, :, activation_index], cmap='gray')
            activation_index += 1
            
display_activation(activations, 8, 8, 1)
Fonksiyonun 4. parametresine 1, 2, 3 değerlerini göndererek, 1. 2. ve 3. katmandaki filtrelerin etkisini görebiliriz:


Sonraki Yazı: CNN - Cat Dog Classifier
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın