Keras 中间层可视化,附代码详解,以Mnist数字为对象

Posted hujinzhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=rG: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()

技术图片

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

以上是关于Keras 中间层可视化,附代码详解,以Mnist数字为对象的主要内容,如果未能解决你的问题,请参考以下文章

[Python人工智能] 三十七.Keras构建无监督学习Autoencoder模型及MNIST聚类可视化详解

Keras训练神经网络DEMO——全连接神经网络训练MNIST

Keras训练神经网络DEMO——全连接神经网络训练MNIST

MATLAB可视化实战系列(四十)-基于MATLAB 自带手写数字集的CNN(LeNet5)手写数字识别-图像处理(附源代码)

Tensorflow实现多层神经网络tf.keras进行fashion_mnist时装分类(完整版)

keras库的安装及使用,以全连接层和手写数字识别MNIST为例