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等) 重复下面的迭代过程: 输入的正向传播 计 ...
随机推荐
- laravel StartSession中间件的实现原理
1. 打开app\Http\Kernel.php,找到StartSession的位置.这里要说一下,middleware中的中间件是都会被执行的,但执行的顺序我不知道,还需看源码来实现 protect ...
- Servlet 会话技术cookie和session
会话技术 Cookie技术:会话数据保存在浏览器客户端. Session技术:会话数据保存在服务器端. 一.Cooke技术 1. 特点 Cookie技术:会话数据保存在浏览器客户端. 2 .Cooki ...
- 【C/C++】泛型栈
用 C 语言实现泛型栈 mystack.h #ifndef __MYSTACK_H__ #define __MYSTACK_H__ #include <assert.h> // C sty ...
- 用VSCode的debugger for chrome插件调试服务器项目的配置方式
项目放到tomcat服务器启动起来(以tomcat服务器为例). 配置launch 把谷歌浏览器彻底关闭!(要彻底) 打断点 点左侧的调试 点刷新!(这一步也需要)
- 1、安装Angular-CLI脚手架工具
依赖环境的安装 1.安装node.js(版本在6以上) 查看版本号:node -v 2.安装npm(npm会随着node的安装一起被安装) 3.安装Python(我安装的是2.7.14),要安装环境变 ...
- SpringBoot使用CORS解决跨域请求问题
什么是跨域? 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 如果一个请求地址里面的协议.域名和端口号都相同,就属于同源. ...
- 学习Linux系统中命令的简单方法
如果说如何快速学习.了解Linux的话,我的答案是学命令.背命令!为何呢?对于一名新手来说,去学习Linux的思想.了解Linux的架构.明白Linux中“一切皆文件”概念虽然说是没有错,是对的.但是 ...
- Linux---centos编译安装ffmpeg
环境 系统环境:CentOS release 6.7 (Final) 需求 编译安装ffmpeg 获取依赖 安装依赖包 yum install -y autoconf automake cmake f ...
- 用Python自动发送邮件
用Python自动发送邮件 最近需要在服务器上处理一些耗时比较长的任务,因此想到利用python写一个自动发送邮件的脚本,在任务执行完毕后发送邮件通知我.以下代码以163邮箱为例: 开通163 ...
- python3入门教程(一)之 hello world
概述 python 这门语言这几年非常的火,很多技术都用的到,像爬虫,大数据,人工智能等,包括很多的小孩都首选python作为入门学习语言,那python 究竟是怎样一门语言呢? Python 是一个 ...