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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
简单介绍Python中的round()方法
May 15 Python
Python作用域用法实例详解
Mar 15 Python
基于python requests库中的代理实例讲解
May 07 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
python实现猜拳游戏
Mar 04 Python
如何使用python切换hosts文件
Apr 29 Python
django queryset 去重 .distinct()说明
May 19 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
利用PHP动态生成VRML网页
2006/10/09 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
js控制框架刷新
2008/08/01 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
Python 字符串定义
2009/09/25 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python_mask_array的用法
2020/02/18 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
个人简历自我评价
2014/02/02 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
中专生自荐信
2014/06/25 职场文书
教师节慰问信
2015/02/15 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书