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 相关文章推荐
在Gnumeric下使用Python脚本操作表格的教程
Apr 14 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
python pytest进阶之conftest.py详解
Jun 27 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
django自带调试服务器的使用详解
Aug 29 Python
python、Matlab求定积分的实现
Nov 20 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
python使用numpy中的size()函数实例用法详解
Jan 29 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
jquery cookie插件代码类
2009/05/26 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
在Python的web框架中配置app的教程
2015/04/30 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
Python编程中类与类的关系详解
2019/08/08 Python
python如何获取apk的packagename和activity
2020/01/10 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
工程质量承诺书范文
2014/03/27 职场文书
爱国主义演讲稿
2014/05/07 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
天下第一关导游词
2015/02/06 职场文书
焦裕禄观后感
2015/06/03 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书