1.特征图可视化:
对网络中各层特征图的可视化可用python来实现,具体实现如下:
# coding: utf-8
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import os
import sys
import caffe
#网络结构描述文件
deploy_file="E:/graduate_student/deep_learning/caffe/new_Win_caffe/document/1/caffe-windows/caffe-windows/examples/mnist/lenet.prototxt"
#模型文件
model_file="E:/graduate_student/deep_learning/caffe/new_Win_caffe/document/1/caffe-windows/caffe-windows/examples/mnist/modle/_iter_10000.caffemodel"
#测试图片
test_data="E:/graduate_student/deep_learning/caffe/new_Win_caffe/document/1/caffe-windows/caffe-windows/examples/mnist/MNIST_data/0-9/8.bmp"
#特征图路径
feature_map_path="E:/graduate_student/deep_learning/caffe/new_Win_caffe/document/1/caffe-windows/caffe-windows/examples/mnist/draw_data/"
#编写一个函数,用于显示各层的参数,padsize用于设置图片间隔空隙,padval用于调整亮度
def show_data(data,name,padsize=1,padval=0):
#归一化(0到1)
data-=data.min()
data/=data.max()
#根据data中图片数量data.shape[0](卷积核数量),计算最后输出时每行每列图片数n
n=int(np.ceil(np.sqrt(data.shape[0])))
#对于conv1,data.shape→(20,24,24)
#(前面填补0个,后面填补n**2-data.shape[0]),(前面填补0个,后面填补padsize个),(前面填补0个,后面填补padsize个)
padding=((0,n**2-data.shape[0]),(0,padsize),(0,padsize))
data = np.pad(data, padding, mode='constant', constant_values=padval) #常数值填充,填充0
#对于conv1,panding后data.shape→(25,25,25)
#对于conv1,将(25,25,25)reshape→(5,5,25,25)再transpose((0,2,1,3))
data=data.reshape((n,n)+data.shape[1:]).transpose((0,2,1,3))
#