Keras 中间层可视化,附代码详解,以Mnist数字为对象
最近搭建了个Resnet50 的神经网络模型,相看一看中间某一层的输出结果,想感性的感受下逐层提取特征的过程,以数字0为对象,对数字0逐层提取特征,话不多说直接上代码,关于如何搭建Resnet,可以参见博主的博客主页,也可以参见网上资料,关于如何搭建资源很丰富,在这里直接导入已经搭建并且 训练好的神经网络模型。
#!/usr/bin/env python 3.6
#_*_coding:utf-8 _*_
#@Time :2019/11/16 22:42
#@Author :控制工程小小白
#@FileName: virtual.py #@Software: PyCharm
from keras.models import load_model
from keras import backend as K
import cv2
import numpy as np
import processor
from matplotlib import pyplot as plt
from Resnet import Resnet50
from keras.models import Model
from keras import backend as K
from keras.layers import Input
model=Resnet50()#导入模型,该模型的搭建代码见博主的下一篇博客
image_path=r'G:\make_Mnist_data\mnist_train\0.jpg'#测试图片保存的路径
image=cv2.imread(image_path)#读取图片 image_arr = cv2.resize(image, (32, 32))# 根据载入的训练好的模型的配置,将图像统一尺寸
print(image_arr.shape)
image_arr = np.expand_dims(image_arr, axis=0) model.load_weights('./My_keras_Resnet50_weight_Adma.h5') #给Resnet加载已经训练好了的权值文件。
layer_1 = K.function([model.layers[0].input], [model.layers[40].output])#第一个 model.layers[0],不修改,表示输入数据;第二个model.layers[you wanted],修改为你需要输出的层数的编号 print(model.layers[40].output.shape)#输出第40层的形状 #第40层后的特征图展示,输出是(?,19,19,512),(样本个数,特征图尺寸长,特征图尺寸宽,特征图个数) plt.subplots_adjust(left=None, bottom=None, right=None, top=None,
wspace=None, hspace=None)#调整图与图之间的间隔
f1 = layer_1([image_arr])[0]#只修改inpu_image
for _ in range(512):#512表示特征图通道数
show_img = f1[:, :, :, _]
show_img.shape = [19, 19]
plt.subplot(32, 16, _ + 1)#将特征图显示为32行16列
plt.subplot(32, 16, _ + 1)
plt.imshow(show_img, cmap='gray')
plt.axis('off')
plt.show()

此图即是提取中间层的结果。
Keras 中间层可视化,附代码详解,以Mnist数字为对象的更多相关文章
- 【TensorFlow】理解tf.nn.conv2d方法 ( 附代码详解注释 )
最近在研究学习TensorFlow,在做识别手写数字的demo时,遇到了tf.nn.conv2d这个方法,查阅了官网的API 发现讲得比较简略,还是没理解.google了一下,参考了网上一些朋友写得博 ...
- 代码详解:TensorFlow Core带你探索深度神经网络“黑匣子”
来源商业新知网,原标题:代码详解:TensorFlow Core带你探索深度神经网络“黑匣子” 想学TensorFlow?先从低阶API开始吧~某种程度而言,它能够帮助我们更好地理解Tensorflo ...
- LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解)
摘自:https://www.jianshu.com/p/b7e72e585a37 LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解 ...
- BM算法 Boyer-Moore高质量实现代码详解与算法详解
Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...
- ASP.NET MVC 5 学习教程:生成的代码详解
原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- Github-karpathy/char-rnn代码详解
Github-karpathy/char-rnn代码详解 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2016-1-10 ...
- JAVA类与类之间的全部关系简述+代码详解
本文转自: https://blog.csdn.net/wq6ylg08/article/details/81092056类和类之间关系包括了 is a,has a, use a三种关系(1)is a ...
- Java中String的intern方法,javap&cfr.jar反编译,javap反编译后二进制指令代码详解,Java8常量池的位置
一个例子 public class TestString{ public static void main(String[] args){ String a = "a"; Stri ...
- Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测
Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测 2017年12月13日 17:39:11 机器之心V 阅读数:5931 近日,Artur Suilin 等人发布了 Kaggl ...
随机推荐
- maven在线自动更新太慢怎么办?
使用IDEA和Eclipse开发maven项目时,maven在添加一项新的依赖时,如果发现本地仓库没有,就会向位于国外服务器的中央仓库下载.如果所处网络没有翻墙,下载速度会慢到你想原地爆炸. 这个时候 ...
- Vue-cli父子组件之间传参
一.父传子( 先写父组件 父组件 <template> <子组件 :子组件的变量名='父组件的变量'> </子组件> //子组件的变量名前的冒号千万别丢了有和没有是 ...
- Web前端安全之利用Flash进行csrf攻击
整理于<XSS跨站脚本攻击剖析与防御>—第6章 Flash在客户端提供了两个控制属性: allowScriptAccess属性和allowNetworking属性,其中AllowScrip ...
- [JZOJ100047] 【NOIP2017提高A组模拟7.14】基因变异
Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...
- [BZOJ1116] CLO
1116: [POI2008]CLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1311 Solved: 709[Submit][Status] ...
- Cocos2d-x 学习笔记(7) 内存管理 Sprite SpriteFrame Texture2D
1. 总结 Sprite和SpriteFrame和Texture2D关系紧密,三个类都继承了Ref类.精灵有成员精灵帧和纹理,精灵帧有成员纹理.精灵帧和纹理被精灵帧引用时,引用计数增加,不再被引用时, ...
- Unity - Raycast 射线检测
本文简要分析了Unity中射线检测的基本原理及用法,包括: Ray 射线 RaycastHit 光线投射碰撞信息 Raycast 光线投射 SphereCast 球体投射 OverlapSphere ...
- Halcon C# 联合编程问题(三)
因为之前遇到的那个halcon处理的图片要转换成ImageSource的问题,迟迟没有找到好的解决方案, 于是决定直接在wpf中使用halcon提供的HWindowControlWPF,用于显示图片. ...
- SpringCloud学习--Eureka 服务注册与发现
目录 一:构建项目 二:服务注册与发现 为什么选择Eureka,请看上一篇博客 Eureka -- 浅谈Eureka 项目构建 IDEA 选择 New Project 选择 Spring Initia ...
- linux端口查询
常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务.守护进程.和程序所使用的最常见的通信端口.该列表还可以在 /etc/services 文件中找到.要查看由互联网号码分派局(IANA) ...