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 09 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
python实现微信远程控制电脑
Feb 22 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
python numpy 按行归一化的实例
Jan 21 Python
python将时分秒转换成秒的实例
Dec 07 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
python 常见的排序算法实现汇总
Aug 21 Python
利用python爬取有道词典的方法
Dec 08 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
How do I change MySQL timezone?
2008/03/26 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
常用python编程模板汇总
2016/02/12 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
wxpython布局的实现方法
2019/11/01 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
详解python中的闭包
2020/09/07 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
热能动力工程毕业生自荐信
2013/11/07 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
个人担保书范文
2014/05/20 职场文书
毕业设计论文评语
2014/12/31 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
PyMongo 查询数据的实现
2021/06/28 Python