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选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
python批量修改文件编码格式的方法
May 31 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
深入学习python多线程与GIL
Aug 26 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
php cout<<的一点看法
2010/01/24 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
python写的ARP攻击代码实例
2014/06/04 Python
用Python设计一个经典小游戏
2017/05/15 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
Django models filter筛选条件详解
2020/03/16 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python之随机数函数的实现示例
2020/12/30 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
语文教师个人工作总结
2015/02/06 职场文书
就业导师推荐信范文
2015/03/27 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis