Caffe 网络权值可视化

来源:互联网 发布:美呼软件靠谱吗 编辑:程序博客网 时间:2024/05/18 02:46

对训练后的网络权值进行可视化可以判断模型的优劣及是否欠(过)拟合。经过良好训练的网络权值通常表现为美观,光滑;反之则表现为噪声图像,或者图案相关性太高,或者缺乏结构性,或有较多‘死’区域。

可视化代码只需要读取训练后的网络结构和权值文件,将各层的权值数据投影到像素空间即可。

主程序

clear;clc;close all;addpath('matlab');caffe.set_mode_cpu();model_dir = 'models/bvlc_reference_caffenet/';net_model = [model_dir 'deploy.prototxt'];net_weights = [model_dir 'bvlc_reference_caffenet.caffemodel'];phase = 'test'; % run with phase test (so that dropout isn't applied)% Initialize a networknet = caffe.Net(net_model, net_weights, phase);param_names={'conv1','conv2','conv3','conv4','conv5'};for i=1:length(param_names)    visualize_weight(net,param_names{i},1);end

可视化函数

function visualize_weight(net,param_name,space)w=net.params(param_name,1).get_data();size(w)nums=size(w,4);channels=size(w,3);width=size(w,2);count=nums*channels;n=ceil(sqrt(count));weight_map=zeros(n*(width+space),n*(width+space),'uint8');w=w-min(w(:));w=w/max(w(:))*255;w=uint8(w);for i=0:count-1    c=mod(i,n);    r=floor(i/n);    j=mod(i,channels)+1;    k=floor(i/channels)+1;    weight_map(r*(width+space)+(1:width),c*(width+space)+(1:width))=w(:,:,j,k);endfigure;imshow(weight_map);title(param_name);

结果

第一个卷积层的卷积核参数大小为:11×11×3×96
这里写图片描述

3 0
原创粉丝点击