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使用Nginx和uWSGI来运行Python应用
Jan 09 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
python读写csv文件方法详细总结
Jul 05 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
Python网络编程之ZeroMQ知识总结
Apr 25 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
PHP 正则表达式小结
2015/02/12 PHP
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
vuejs指令详解
2017/02/07 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
VUE 使用中踩过的坑
2018/02/08 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
python简单实例训练(21~30)
2017/11/15 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
python中class的定义及使用教程
2019/09/18 Python
python标准库OS模块详解
2020/03/10 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
经典c++面试题六
2012/01/18 面试题
人力资源部培训专员岗位职责
2014/01/02 职场文书
转让协议书范本
2014/04/15 职场文书
英语通知范文
2015/04/22 职场文书
英文辞职信范文
2015/05/13 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书