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 调用VC++的动态链接库(DLL)
Sep 06 Python
pyqt4教程之widget使用示例分享
Mar 07 Python
35个Python编程小技巧
Apr 01 Python
python字符串过滤性能比较5种方法
Jun 22 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
python实现大文件分割与合并
Jul 22 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php实现的双向队列类实例
2014/09/24 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
react-router中的属性详解
2017/06/01 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
深入解析Python中函数的参数与作用域
2016/03/20 Python
python:socket传输大文件示例
2017/01/18 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
python能自学吗
2020/06/18 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
.NET方向面试题
2014/11/20 面试题
大学四年规划书范文
2013/12/27 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
关于赌博的检讨书
2014/01/24 职场文书