AI:CNN神經網絡貓狗分類經典案例,深度學習過程中間層激活特徵圖可視化
基於前文 https://zhangphil.blog.csdn.net/article/details/103581736 ,這一次把前文神經網絡在深度學習過程中,中間層的每一層激活的特徵圖可視化展現出來(中間層激活可視化),
取前8層
# 深度學習過程中每一層的神經網絡激活圖。
def visible():
model = load_model(model_file_name)
layer_outputs = [layer.output for layer in model.layers[:8]]
activation_model = models.Model(inputs=model.input, outputs=layer_outputs)
img_path = './data/test/cat/cat.4041.jpg'
img = image.load_img(img_path, target_size=(150, 150))
img_tensor = image.img_to_array(img)
img_tensor = img_tensor / 255
img_tensor = np.expand_dims(img_tensor, axis=0)
activations = activation_model.predict(img_tensor)
for k in range(len(activations)):
first_layer_activation = activations[k]
print(first_layer_activation.shape)
col = 8
plt.figure(figsize=(50, 50))
for i in range(first_layer_activation.shape[3]):
# col列。
plt.subplot((first_layer_activation.shape[3] / col) + 1, col, i + 1)
plt.imshow(first_layer_activation[0, :, :, i], cmap='viridis')
#保存圖片。
plt.savefig(str(k) + ".jpg", dpi=100)
plt.show()
第一層(0)的激活圖可視化:
第2層(1)的激活圖可視化:
最後一層
第8層(7)神經網絡激活圖:
可以看到,隨着深度學習往縱深發展,神經網絡學習到的知識越來越抽象。層數加深,人類的直觀越來越難以理解。