最近搭建了个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()

此图即是提取中间层的结果。

最新文章

  1. 终于遇到app不兼容,你遇到了么?
  2. Top100Summit全球案例研究峰会第一天总结——云计算和大数据
  3. mysql开启远程访问
  4. 对于transform的新认识
  5. ASP.NET对HTML元素进行权限控制(三)
  6. python selenium自动化(一)点击页面链接测试
  7. HDOJ/HDU 1075 What Are You Talking About(字符串查找翻译~Map)
  8. base 使网页所有超链接都以新超链接的方式打开
  9. ik分词
  10. linux内核源码阅读之facebook硬盘加速flashcache之六
  11. hadoop参数配置
  12. ubuntu无法进入桌面的修复
  13. Loading class `com.mysql.jdbc.Driver'. The new driver class is `com.mysql.cj.jdb 问题
  14. node中间层实现文件上传
  15. react采坑笔记
  16. element——message-box
  17. Linux netstat命令具体解释
  18. 简述MVC
  19. python __name__ = '__main__' 的作用
  20. JSP基本用法(二)隐含对象

热门文章

  1. Python历史+优缺点+应用领域+网站职位简介
  2. drf框架serializers中ModelSerializer类简化序列化和反序列化操作
  3. Windows 服务程序(一)
  4. JavaScript专题之事件循环
  5. 关于StreamReader的知识分享
  6. CSAPP: 位操作实现基本运算
  7. ESP8266开发之旅 应用篇① 局域网应用 ——炫酷RGB彩灯
  8. textView 实现完成收键盘操作
  9. java架构之路-(MQ专题)RabbitMQ安装和基本使用
  10. 函数进阶(三) day14