一、网络结构

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网络权值可视化的更多相关文章

  1. mnist全连接层网络权值可视化

    一.数据准备 网络结构:lenet_lr.prototxt 训练好的模型:lenet_lr_iter_10000.caffemodel 下载地址:链接:https://pan.baidu.com/s/ ...

  2. weight decay (权值衰减)

    http://blog.sina.com.cn/s/blog_890c6aa30100z7su.html 在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网 ...

  3. 2019年CCPC网络赛 HDU 6703 array【权值线段树】

    题目大意:给出一个n个元素的数组A,A中所有元素都是不重复的[1,n].有两种操作:1.将pos位置的元素+1e72.查询不属于[1,r]中的最小的>=k的值.强制在线. 题解因为数组中的值唯一 ...

  4. caffe中权值初始化方法

    首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代 ...

  5. SPOJ 839 OPTM - Optimal Marks (最小割)(权值扩大,灵活应用除和取模)

    http://www.spoj.com/problems/OPTM/ 题意: 给出一张图,点有点权,边有边权 定义一条边的权值为其连接两点的异或和 定义一张图的权值为所有边的权值之和 已知部分点的点权 ...

  6. 神经网络权值初始化方法-Xavier

    https://blog.csdn.net/u011534057/article/details/51673458 https://blog.csdn.net/qq_34784753/article/ ...

  7. weight decay(权值衰减)、momentum(冲量)和normalization

    一.weight decay(权值衰减)的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合.在损失函数中,weight decay是放在正则项(regularizat ...

  8. CNN中的局部连接(Sparse Connectivity)和权值共享

    局部连接与权值共享 下图是一个很经典的图示,左边是全连接,右边是局部连接. 对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 ...

  9. 权值初始化 - Xavier和MSRA方法

    设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计 ...

随机推荐

  1. php添加pdo_mysql.so的扩展

    1. 首先进入你下载的php的安装包里找到pdo_mysql文件夹. /usr/local/php-/ext/pdo_mysql ps:有些教程说从http://pecl.php.net/这个网站上下 ...

  2. DFS例题

    特殊的质数肋骨(递归)] -题目描述-农民约翰的母牛总是生产出最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋 ...

  3. leetcode-algorithms 目录

    leetcode算法目录 题号 链接 难度等级 36 leetcode-algorithms-36 Valid Sudoku medium 35 leetcode-algorithms-35 Sear ...

  4. virtural machine eth1

    DEVICE=eth1HWADDR=00:50:56:33:EF:21TYPE=EthernetUUID=f35bd21c-9636-4e3f-a05c-bd4382c352bfONBOOT=yesN ...

  5. hdu 6069 Counting Divisors(求因子的个数)

    Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Oth ...

  6. BPM如何选型?

    Gartner 对BPM 的定义是:BPM 是一个描述一组服务和工具的一般名词,这些服务和工具为显式的流程管理(如流程的分析.定义.执行.监视和管理)提供支持. 不是所有的BPM 产品都能包括BPM ...

  7. boot项目swagger接口调试工具默认访问路径

    今天第一次接触boot项目,项目里集成了swagger接口调试工具,以前写项目的时候在swagger 文件夹里可以找到访问路径,换成boot项目以后找不到swagger文件夹了,百度了一下,boot项 ...

  8. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)

     reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...

  9. Sed+Grep 快速替换查找字段(批量替换字符串)

    格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl路径` 命令分解: grep 查找字段 -rl路径   列出”路径”中” 查找字段” 的所有文件 ...

  10. Oracle启动和归档模式

    数据库运行 Oracle数据库的完整启动过程是分步骤完成的,包含以下3个步骤: 启动实例–>加载数据库–>打开数据库 因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操 ...