bvlc_reference_caffenet网络权值可视化
一、网络结构
models/bvlc_reference_caffenet/deploy.prototxt

二、显示conv1的网络权值
clear;
clc;
close all;
addpath('matlab')
caffe.set_mode_cpu();
caffe.version()
net = caffe.Net('models/bvlc_reference_caffenet/deploy.prototxt',...
'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel', 'test');
net.layer_names
net.blob_names
conv1_layer = net.layer_vec();
blob1 = conv1_layer.params();%权重,params()为偏置
w = blob1.get_data();
size(w)%
W = zeros(*, *);%96张小图片,每张小图片11**,输出的卷积个数为96
for u = :
for v = :
W(*(u-) + (:), *(v-) + (:)) = w(:, :, u, v)';%矩阵块拷贝
end
end W = W - min(min(W));
W = W/(max(max(W)))*;%归一化到[,]
W = uint8(W);
W = [W, zeros(size(W, ), *)];%扩展矩阵,大小为(11x3,4x11)
WW = cat(, W(:, :), W(:, :), W(:, :));%将二维矩阵按通道拆分为3个二维矩阵
W = zeros(*, *, );%用于显示的彩色图片,初始化为黑色
for u = :
for v = :
W((u-)* + (:), (v-)* + (:), :) = WW(:, (u-)** + (v-)* + (:), :);%将11行每11列的数据块复制到W,复制3个通道
end
end
W = uint8(W);
figure; imshow(W);
输出:
ans =
1.0.
ans =
× cell 数组
'data'
'conv1'
'relu1'
'pool1'
'norm1'
'conv2'
'relu2'
'pool2'
'norm2'
'conv3'
'relu3'
'conv4'
'relu4'
'conv5'
'relu5'
'pool5'
'fc6'
'relu6'
'drop6'
'fc7'
'relu7'
'drop7'
'fc8'
'prob'
ans =
× cell 数组
'data'
'conv1'
'pool1'
'norm1'
'conv2'
'pool2'
'norm2'
'conv3'
'conv4'
'conv5'
'pool5'
'fc6'
'fc7'
'fc8'
'prob'
ans =

三、其他卷积层网络权值可视化
1、visualize_weights.m
function[] = visualize_weights(w,s)
h = max(size(w, ), size(w, )); %Kernel size
g = h + s; %Grid size, larger than Kernel size for better visual effects. %Normalization for gray scale
w = w - min(min(min(min(w))));
w = w/max(max(max(max(w))))*;
w = uint8(w); W = zeros(g*size(w, ), g*size(w, ));%用于保存权值的数据,通道数*g 行, 卷积核数*g 列
for u = :size(w, )
for v = :size(w, )
W(g*(u-) + (:h), g*(v-) + (:h)) = w(:, :, u, v)';
end
end
W = uint8(W);
figure; imshow(W);
2、caffenet_weights_vis.m
clear;
clc;
close all;
addpath('matlab')
caffe.set_mode_cpu();
sprintf(['Caffe Version = ', caffe.version(), '\n']);
net = caffe.Net('models/bvlc_reference_caffenet/deploy.prototxt',...
'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel', 'test'); sprintf('Load net done. Net layers: ');
net.layer_names sprintf('Net blobs: ');
net.blob_names %Conv1 Weight Visualization
conv1_layer = net.layer_vec();
blob1 = conv1_layer.params();
w = blob1.get_data();
sprintf('Conv1 Weight shape:');
size(w)
visualize_weights(w, ); %Conv2 Weight Visualization
conv2_layer = net.layer_vec();
blob2 = conv2_layer.params();
w2 = blob2.get_data();
sprintf('Conv2 Weight shape:');
size(w2)
visualize_weights(w2, ); %Conv3 Weight Visualization
conv3_layer = net.layer_vec();
blob3 = conv3_layer.params();
w3 = blob3.get_data();
sprintf('Conv3 Weight shape:');
size(w3)
visualize_weights(w3, ); %Conv4 Weight Visualization
conv4_layer = net.layer_vec();
blob4 = conv4_layer.params();
w4 = blob4.get_data();
sprintf('Conv4 Weight shape:');
size(w4)
visualize_weights(w4, ); %Conv5 Weight Visualization
conv5_layer = net.layer_vec();
blob5 = conv5_layer.params();
w5 = blob5.get_data();
sprintf('Conv5 Weight shape:');
size(w5)
visualize_weights(w5, );
3、输出
ans =
× cell 数组
'data'
'conv1'
'relu1'
'pool1'
'norm1'
'conv2'
'relu2'
'pool2'
'norm2'
'conv3'
'relu3'
'conv4'
'relu4'
'conv5'
'relu5'
'pool5'
'fc6'
'relu6'
'drop6'
'fc7'
'relu7'
'drop7'
'fc8'
'prob'
ans =
× cell 数组
'data'
'conv1'
'pool1'
'norm1'
'conv2'
'pool2'
'norm2'
'conv3'
'conv4'
'conv5'
'pool5'
'fc6'
'fc7'
'fc8'
'prob'
ans =
ans =
ans =
警告: 图像太大,无法在屏幕上显示;将以 % 显示
> In images.internal.initSize (line )
In imshow (line )
In visualize_weights (line )
In caffenet_weights_vis (line )
ans =
ans =
>>
end
bvlc_reference_caffenet网络权值可视化的更多相关文章
- mnist全连接层网络权值可视化
一.数据准备 网络结构:lenet_lr.prototxt 训练好的模型:lenet_lr_iter_10000.caffemodel 下载地址:链接:https://pan.baidu.com/s/ ...
- weight decay (权值衰减)
http://blog.sina.com.cn/s/blog_890c6aa30100z7su.html 在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网 ...
- 2019年CCPC网络赛 HDU 6703 array【权值线段树】
题目大意:给出一个n个元素的数组A,A中所有元素都是不重复的[1,n].有两种操作:1.将pos位置的元素+1e72.查询不属于[1,r]中的最小的>=k的值.强制在线. 题解因为数组中的值唯一 ...
- caffe中权值初始化方法
首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代 ...
- SPOJ 839 OPTM - Optimal Marks (最小割)(权值扩大,灵活应用除和取模)
http://www.spoj.com/problems/OPTM/ 题意: 给出一张图,点有点权,边有边权 定义一条边的权值为其连接两点的异或和 定义一张图的权值为所有边的权值之和 已知部分点的点权 ...
- 神经网络权值初始化方法-Xavier
https://blog.csdn.net/u011534057/article/details/51673458 https://blog.csdn.net/qq_34784753/article/ ...
- weight decay(权值衰减)、momentum(冲量)和normalization
一.weight decay(权值衰减)的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合.在损失函数中,weight decay是放在正则项(regularizat ...
- CNN中的局部连接(Sparse Connectivity)和权值共享
局部连接与权值共享 下图是一个很经典的图示,左边是全连接,右边是局部连接. 对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 ...
- 权值初始化 - Xavier和MSRA方法
设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计 ...
随机推荐
- linux下查看进程命令
他们都是用来显示当前运行的进程,但是: ps -aux 是用BSD的格式来显示python这个进程显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , ...
- Ubuntu 停止 mydesktop 服务
systemctl list-unit-files | grep mydesktop systemctl disable mydesktop.service
- python学习(十)
- centos7安装doxygen
编译 编译过程参考官网:https://www.stack.nl/~dimitri/doxygen/download.html 编译过程: git clone https://github.com/d ...
- python -- 面向对象-成员
1.成员 在类中,你能写的所有内容都是类的成员 2.变量 1.实例变量:由对象去访问的变量,一般使用是 对象 . 属性 class Person: def __in ...
- javascript的event loop事件循环
javascript的event loop事件循环 这是今天一个朋友发给我的一个面试题, 感觉还挺有意思的, 写个博客以供分享 先看看这个面试题目: 观察下面的代码,写出输出结果 console.lo ...
- Android 音视频深入 十 FFmpeg给视频加特效(附源码下载)
项目地址,求starhttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(AVfilte ...
- Vertical-align + 表单
Vertical-align 垂直对齐方式 定义行内元素的基线相对于该元素所在的基线的垂直对齐. inline inline-clock img图片标签具有,块级元素没有. vertical-alig ...
- C语言打印杨辉三角(2种方法)
杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一. ...
- eureka 服务注册与发现
1.创建父工程来管理依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...