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


Posted in Python onJanuary 24, 2020

鉴于最近一段时间一直在折腾的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 特征图可视化实例(中间层)

以上这篇keras 特征图可视化实例(中间层)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python k-近邻算法实例分享
Jun 11 Python
Python2.x中文乱码问题解决方法
Jun 02 Python
Python生成数字图片代码分享
Oct 31 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
Python解决八皇后问题示例
Apr 22 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
python验证码图片处理(二值化)
Nov 01 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
Python打印不合法的文件名
Jul 31 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
基于keras输出中间层结果的2种实现方式
Jan 24 #Python
tensorflow 保存模型和取出中间权重例子
Jan 24 #Python
tensorflow 模型权重导出实例
Jan 24 #Python
在Tensorflow中查看权重的实现
Jan 24 #Python
tensorflow求导和梯度计算实例
Jan 23 #Python
Tensorflow的梯度异步更新示例
Jan 23 #Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 #Python
You might like
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
Js的MessageBox
2006/12/03 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python内建模块struct实例详解
2018/02/02 Python
pandas string转dataframe的方法
2018/04/11 Python
Python中偏函数用法示例
2018/06/07 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
总结python中pass的作用
2019/02/27 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
python实现QQ批量登录功能
2019/06/19 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python梯度下降算法的实现
2020/02/24 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
称象教学反思
2014/02/03 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
自荐信的格式
2014/03/10 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
离婚被告代理词
2015/05/23 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书