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:
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ş:from vis.visualization import visualize_activation from vis.utils import utils from keras import activations from matplotlib import pyplot as plt
Son olarak aşağıdaki methodları uygulayalım:layer_idx = utils.find_layer_idx(model, 'dense_2')
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]) >>
Fonksiyonun 4. parametresine 1, 2, 3 değerlerini göndererek, 1. 2. ve 3. katmandaki filtrelerin etkisini görebiliriz: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)