一、网络结构

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. Anaconda 创建环境

    2019-03-25 17:10:51 Anaconda 给不同的项目创建不同的环境真的非常重要,最近在使用flask的时候在base环境中安装flask-bootstrap,竟然将我原本的py3.7 ...

  2. 如何使用 Deepfakes 换脸

    如何使用 Deepfakes 换脸 1. 获取deepfakes工具包 git clone https://github.com/deepfakes/faceswap.git 2. 补齐依赖包: pi ...

  3. QGis+QT5.9+VS2017源码编译

    1.需要软件 VS2017 QT5.9.2 CMake 3.10.2 Cygwin osgeo4w QGIS源码 2.安装VS2017  过程省略 是由于机器上已经安装了VS2017 3.安装QT5. ...

  4. Steam饥荒

    存档回滚 D:\Program Files (x86)\Steam\userdata\***\219740\remote 巨人国是survival_数字,海难是shipwreck_数字,哈姆雷特是po ...

  5. 另一道不知道哪里来的FFT题

    给定一个序列,求出这个序列的k阶前缀和,模998244353,n<=1e5. k阶前缀和可以看成一个一个n*k的平面上的二维行走问题. 第i项对第j项的贡献是从(i,0)走到(j,k)的NE L ...

  6. JS正则表达式分组模式

    分组的概念 分组就是在正则表达式中用()包起来的内容代表了一个分组,如下: var reg=/([0-9]{3})([a-z]{2})/ var str="123ab" conso ...

  7. 一次完整的http事务的过程

    1.域名解析 2.发起TCP三次握手 3.建立TCP连接以后发起http请求 4.服务器端响应请求,浏览器得到html代码 5.浏览器解析html代码并请求html中的资源 6.浏览器对页面进行渲染呈 ...

  8. jsp请求转发与重定向区别小结

    1.当使用转发时,JSP容器将使用一个内部方法来调用目标页面,新的页面继续处理同一个请求,而浏览器不会知道这个过程; 2.重定向是第一个页面通知浏览器发送一个新的页面请求. 3.转发不改变URL,重定 ...

  9. `ifdef、`else、`endif 用法

    一般情况下,Verilog HDL源程序中所有的行都参加编译.但是有时候希望对其中的一部份内容只有在条件满足的时候才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足条件 ...

  10. SpringBoot(三)thymeleaf+JPA+MySql

    接着上一节的 第一步:在pom文件中加入以下代码: <!--JPA--> <dependency> <groupId>org.springframework.boo ...