赞
踩
我们通过对CNN滤波器W1进行可视化,来观察卷积层到底在观察什么?
卷积层的可视化函数如下:
#可视化函数
def filter_show(filters, nx=8, margin=3, scale=10):
FN, C, FH, FW = filters.shape
ny = int(np.ceil(FN / nx))
fig = plt.figure()
fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05)
for i in range(FN):
ax = fig.add_subplot(ny, nx, i+1, xticks=[], yticks=[])
ax.imshow(filters[i, 0], cmap=plt.cm.gray_r, interpolation='nearest')
plt.show()
在网络初始化的时候可视化W1
滤波器图像如下所示:
从上图可以观察到,由于学习前的滤波器是随机进行初始化的,所以在黑白的浓淡上没有规律可循。
在训练完成后显示滤波器
如果我们把滤波器应用于图像,查看输出的图像:
就是它在观察边缘(颜色变化的分界线)和斑块(局部的块状区域)等。
由此可知,卷积层的滤波器会提取边缘或斑块等原始信息。而刚才实现的CNN会将这些原始信息传递给后面的层。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。