Keras 中间层可视化,附代码详解,以Mnist数字为对象
2019-11-17 11:43
4003 查看
最近搭建了个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()
此图即是提取中间层的结果。
相关文章推荐
- Deep Learning-TensorFlow (1) CNN卷积神经网络_MNIST手写数字识别代码实现详解
- 【深度学习】笔记2_caffe自带的第一个例子,Mnist手写数字识别代码,过程,网络详解
- 优化版本对生成对抗网络生成手写数字集(附代码详解)
- 利用Python代码实现数据可视化的5种方法详解
- JSON对象 详解及实例代码
- Keras_深度学习_MNIST数据集手写数字识别之各种调参
- spring实现bean对象创建代码详解
- 第64讲:Scala中隐式对象代码实战详解
- Keras使用全神经网络增加MNIST手写数字测试准确性
- 手写数字识别mnist-demo 代码整理总结
- java对象初始化代码详解
- Python开发tensorflow(多层神经网络)实现mnist手写识别代码详解
- Tensorflow-MNIST数字识别练习代码
- Keras 浅尝之MNIST手写数字识别
- 神经网络与深度学习 使用Python实现基于梯度下降算法的神经网络和自制仿MNIST数据集的手写数字分类可视化程序 web版本
- Keras下实现mnist手写数字
- Keras入门课2 -- 使用CNN识别mnist手写数字
- 【数字的可视化:python画图之散点图sactter函数详解】
- Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解
- keras和tensorflow搭建MNIST手写数字识别