CNN层可视化

时间:2018-10-05 04:56:20

标签: python filter conv-neural-network layer

我正在尝试绘制两件事:

1)应用每个滤波器后的输出(如果为“ Conv2D(32,(3,3)....),则总共为32个输出

2)在学习时学习/生成的过滤器(如上所述,共有32个过滤器)

下面是我的代码,演示图像是: Sample Image

首先,我刚刚读了一张图片:

import cv2
import matplotlib.pyplot as plt
%matplotlib inline`
plt.imshow(face)
cv2.waitKey(0)

Ouput of above code

然后我用Keras创建了简单的1层CNN:

from keras.models import Sequential
from keras.layers import Conv2D
import numpy as np

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape = face.shape, padding='valid', activation = 'relu'))

face_batch = np.expand_dims(face, axis=0)
conv_face = model.predict(face_batch)

def visualize_face(face_batch):
    face = np.squeeze(face_batch, axis=0)
    print (face.shape)
    plt.imshow(face[:,:,31])

上面的最后一行从0到31(总共32个过滤器)变化,对于我想可视化的过滤器。那么最后一个单元格将是:

print(np.squeeze(conv_face, axis=0).shape)
visualize_face(conv_face)

Output of above code

这是一种可视化应用于图像的滤镜输出的正确方法吗?

现在问我第二个问题:

我正在尝试绘制模型获得的所有这32个过滤器,同时获取这些输出。那么有人可以帮助我查询吗?

提前谢谢:)

1 个答案:

答案 0 :(得分:1)

您知道如何可视化吗?首先,我是一个初学者,但我会尽力回答您的问题。我的两分钱价值在于,您正在可视化中间激活而不是过滤器。您可以参考this tutorial以获得有关这两个问题的更多详细信息。