keras 特征图可视化实例(中间层)

作者:wanbeila 时间:2021-12-05 22:54:46 

鉴于最近一段时间一直在折腾的CNN网络效果不太理想,主要目标是为了检测出图像中的一些关键点,可以参考人脸的关键点检测算法。

但是由于从数据集的制作是自己完成的,所以数据集质量可能有待商榷,训练效果不好的原因可能也是因为数据集没有制作好(标点实在是太累了)。

于是想看看自己做的数据集在进入到网络后那些中间的隐藏层到底发生了哪些变化。

今天主要是用已经训练好的mnist模型来提前测试一下,这里的mnist模型的准确度已经达到了98%左右。

使用的比较简单的一个模型:


def simple_cnn():
input_data = Input(shape=(28, 28, 1))
x = Conv2D(64, kernel_size=3, padding='same', activation='relu', name='conv1')(input_data)
x = MaxPooling2D(pool_size=2, strides=2, name='maxpool1')(x)
x = Conv2D(32, kernel_size=3, padding='same', activation='relu', name='conv2')(x)
x = MaxPooling2D(pool_size=2, strides=2, name='maxpool2')(x)
x = Dropout(0.25)(x)
# 获得最后一层卷积层的输出
# 添加自己的全连接
x = Flatten(name='flatten')(x)
x = Dense(128, activation='relu', name='fc1')(x)
x = Dropout(0.25)(x)
x = Dense(10, activation='softmax', name='fc2')(x)
model = Model(inputs=input_data, outputs=x)

此模型已经训练好了,跑了10个epoch,验证集0.33

keras 特征图可视化实例(中间层)

这里的效果还是很好的,┓( ´∀` )┏

下面在网上搞了张手写数字

keras 特征图可视化实例(中间层)

使用网络进行预测,这里就先给出如何可视化第一层的卷积层的输出吧,哇哈哈

代码:


input_data = Input(shape=(28, 28, 1))
x = Conv2D(64, kernel_size=3, padding='same', activation='relu', name='conv1')(input_data)
x = MaxPooling2D(pool_size=2, strides=2, name='maxpool1')(x)
x = Conv2D(32, kernel_size=3, padding='same', activation='relu', name='conv2')(x)
x = MaxPooling2D(pool_size=2, strides=2, name='maxpool2')(x)
x = Dropout(0.25)(x)
x = Flatten(name='flatten')(x)
x = Dense(128, activation='relu', name='fc1')(x)
x = Dropout(0.25)(x)
x = Dense(10, activation='softmax', name='fc2')(x)
model = Model(inputs=input_data, outputs=x)

model.load_weights('final_model_mnist_2019_1_28.h5')

raw_img = cv2.imread('test.png')
test_img = load_img('test.png', color_mode='grayscale', target_size=(28, 28))
test_img = np.array(test_img)
test_img = np.expand_dims(test_img, axis=0)
test_img = np.expand_dims(test_img, axis=3)

conv1_layer = Model(inputs=input_data, outputs=model.get_layer(index=1).output)

conv1_output = conv1_layer.predict(test_img)

for i in range(64):
 show_img = conv1_output[:, :, :, i]
 print(show_img.shape)
 show_img.shape = [28,28]
 cv2.imshow('img', show_img)
 cv2.waitKey(0)

核心方法就是通过加载模型后,新建Model,将输出部分换为你想要查看的网络层数即可,当然get_layer()包括了name和index两个参数。最后通过遍历当前卷积层的所有特征映射,将每一个都展示出来。就可以了。

keras 特征图可视化实例(中间层)

来源:https://blog.csdn.net/wanbeila/article/details/86681424

标签:keras,特征图,可视化,中间层
0
投稿

猜你喜欢

  • Django创建一个后台的基本步骤记录

    2021-03-19 02:13:38
  • 运用TensorFlow进行简单实现线性回归、梯度下降示例

    2022-03-02 10:30:15
  • Python爬虫之批量下载喜马拉雅音频

    2022-09-25 20:18:27
  • django做form表单的数据验证过程详解

    2023-11-10 12:26:13
  • ASP 验证码的程序及原理

    2010-04-24 15:56:00
  • Python使用matplotlib绘图无法显示中文问题的解决方法

    2023-07-30 22:16:30
  • PHP session反序列化漏洞超详细讲解

    2023-05-25 08:54:18
  • python 地图经纬度转换、纠偏的实例代码

    2021-11-06 11:12:18
  • 实例代码讲解Python 线程池

    2023-07-19 03:53:04
  • Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔)

    2012-12-04 20:04:29
  • pytorch 实现在一个优化器中设置多个网络参数的例子

    2021-11-30 17:12:05
  • Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    2023-03-13 09:28:44
  • Python csv文件的读写操作实例详解

    2021-06-07 19:02:41
  • python爬取代理ip的示例

    2022-01-20 11:41:12
  • Python 切分数组实例解析

    2022-04-15 02:45:05
  • PyTorch实现MNIST数据集手写数字识别详情

    2021-08-03 17:30:36
  • 中秋将至利用python画一些月饼从天而降不用买了

    2023-08-17 13:08:23
  • Python实现类继承实例

    2023-11-13 07:44:24
  • Tensorflow2.1实现Fashion图像分类示例详解

    2021-01-28 03:59:52
  • IE6实现min-width

    2008-06-12 12:40:00
  • asp之家 网络编程 m.aspxhome.com