深度学习Caffe实战(16)MATLAB实现模型参数权重可视化

前面博客中介绍了怎么样利用MATLAB实现特征图的可视化,那一篇博客中介绍了一个对权重可视化的博客,本来不打算写这个博客了,但是我仔细看了那一篇博客,有点繁琐,所以我又整理了一下用MATLAB实现模型参数权重可视化的部分,这一篇介绍对第一个卷积层权重可视化,下一篇博客介绍Alexnet中2到5卷积层的可视化,请大家注意,只有卷积层才能可视化。
通过对训练后的模型进行可视化可以判断模型的优劣,怎么判断直接看博文后面的效果图,一看便知。直接放MATLAB代码,基于Alexnet,模型是前面介绍内容训练出来的模型,这个模型训练的不好,从参数权重图上就可以看出来,最后我会做一个好的和坏的第一个卷积层的参数可视化效果图,用于对比,如果想要可视化其它网络模型,只需要修改相应的部分就行,这里不再赘述。

clc;
clear;
close all;
addpath('../../../../matlab');
caffe.set_mode_cpu();
net=caffe.Net('alexnetdeploy.prototxt','cloth_iter_100000.caffemodel','test');
net.layer_names      %显示都有哪些层
net.blob_names    
conv1_layer=net.layer_vec(1);  
blob1=conv1_layer.params(1);    %注意只有卷积层是有参数的
w=blob1.get_data();
size(w)
W=zeros(11*3,11*96);
for u=1:3
    for v=1:96
        W(11*(u-1)+(1:11),11*(v-1)+(1:11))= w(:,:,u,v)';
    end
end
W=W-min(min(W));
W=W/(max(max(W)))*255;     %从0-1转换到255
W=uint8(W);
W=[W,zeros(size(W,1),4*11)];
WW=cat(3,W(1:11,:),W(12:22,:),W(23:33,:));
W=zeros(10*12,10*12,3);
for u=1:10
    for v=1:10
        W((u-1)*12+(1:11),(v-1)*12+(1:11),:)=WW(:,(u-1)*11*10+(v-1)*11+(1:11),:);
    end
end
W=uint8(W);
figure;
imshow(W);

效果图:
深度学习Caffe实战(16)MATLAB实现模型参数权重可视化_第1张图片

上面这是一个不好的效果图,因为图案类似噪音太严重,不够平滑,不够美观。

深度学习Caffe实战(16)MATLAB实现模型参数权重可视化_第2张图片

这一张权重图是bvlc_reference_caffenet.caffemodel的权重图,这个效果图比较平滑,也可以观察到一部分权重负责提取高频灰度特征,而另一些负责提取低频彩色特征。哪个好哪个坏,一看便知,这也是可视化权重的一个重要作用。

你可能感兴趣的:(caffe-深度学习,深度学习,matlab,博客,可视化)