zoukankan      html  css  js  c++  java
  • Keras 中间层可视化,附代码详解,以Mnist数字为对象

    最近搭建了个Resnet50 的神经网络模型,相看一看中间某一层的输出结果,想感性的感受下逐层提取特征的过程,以数字0为对象,对数字0逐层提取特征,话不多说直接上代码,关于如何搭建Resnet,可以参见博主的博客主页,也可以参见网上资料,关于如何搭建资源很丰富,在这里直接导入已经搭建并且 训练好的神经网络模型。

     1 #!/usr/bin/env python 3.6
     2 #_*_coding:utf-8 _*_
     3 #@Time    :2019/11/16 22:42
     4 #@Author  :控制工程小小白
     5 #@FileName: virtual.py
     6 
     7 #@Software: PyCharm
     8 from keras.models import load_model
     9 from keras import backend as K
    10 import cv2
    11 import numpy as np
    12 import processor
    13 from matplotlib import pyplot as plt
    14 from Resnet import Resnet50
    15 from keras.models import Model
    16 from keras import backend as K
    17 from keras.layers import Input
    18 model=Resnet50()#导入模型,该模型的搭建代码见博主的下一篇博客
    19 image_path=r'G:make_Mnist_datamnist_train.jpg'#测试图片保存的路径
    20 image=cv2.imread(image_path)#读取图片
    21 
    22 image_arr = cv2.resize(image, (32, 32))# 根据载入的训练好的模型的配置,将图像统一尺寸
    23 print(image_arr.shape)
    24 image_arr = np.expand_dims(image_arr, axis=0)
    25 
    26 model.load_weights('./My_keras_Resnet50_weight_Adma.h5') #给Resnet加载已经训练好了的权值文件。
    27 layer_1 = K.function([model.layers[0].input], [model.layers[40].output])#第一个 model.layers[0],不修改,表示输入数据;第二个model.layers[you wanted],修改为你需要输出的层数的编号
    28 
    29 print(model.layers[40].output.shape)#输出第40层的形状
    30 
    31 #第40层后的特征图展示,输出是(?,19,19,512),(样本个数,特征图尺寸长,特征图尺寸宽,特征图个数)
    32 
    33 plt.subplots_adjust(left=None, bottom=None, right=None, top=None,
    34                 wspace=None, hspace=None)#调整图与图之间的间隔
    35 f1 = layer_1([image_arr])[0]#只修改inpu_image
    36 for _ in range(512):#512表示特征图通道数
    37     show_img = f1[:, :, :, _]
    38     show_img.shape = [19, 19]
    39     plt.subplot(32, 16, _ + 1)#将特征图显示为32行16列
    40     plt.subplot(32, 16, _ + 1)
    41     plt.imshow(show_img, cmap='gray')
    42     plt.axis('off')
    43 plt.show()

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

  • 相关阅读:
    浅谈 facebook .net sdk 应用
    数据库中各种字符串的截取函数
    初、中、高级测试工程师面试题汇总(附答案)
    包管理器 scoop
    ModuleNotFoundError: No module named 'pymouse'解决办法
    Python 正则表达式(分组)
    7个Python实战项目代码,让你分分钟晋级大神!
    经典SQL查询题目
    linux中软件的安装和卸载方法
    测试常用工具
  • 原文地址:https://www.cnblogs.com/hujinzhou/p/guobao_2019_6_1.html
Copyright © 2011-2022 走看看