matlab列优先与高维矩阵重构 及 CNN 逐层可视化 on Matlab
由于matlab在列化a(:)以及reshape(a)等操作中是列优先的,所以要重构出新的高维度矩阵,通常要把reshape和permute结合起来使用。
先到 http://caffe.berkeleyvision.org/ 下载 训练好的model bvlc_reference_caffenet.caffemodel;
更多caffe使用也请参看上面的网址。
clear
close all addpath ./matlab model= './models/bvlc_reference_caffenet/deploy.prototxt';
weights= './models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'; net = caffe.Net(model, weights, 'test'); % create net and load weights %% obtain params in diff layers and show
pdata = net.params('conv1',).get_data(); vis_square(pdata,,0.5); net.blobs('data').reshape([ ]);
net.reshape(); %% prepare the image
im_data = caffe.io.load_image('./examples/images/cat.jpg');
mean = load('./matlab/+caffe/imagenet/ilsvrc_2012_mean.mat'); %% subtract mean_data (already in W x H x C, BGR)
mean_data = mean.mean_data;
im_data = im_data - mean_data; width = ; height = ;
im_data = imresize(im_data, [width, height]); % resize using Matlab's imresize
res = net.forward({im_data}); prob = res{}; %% obtain features and show
ddata = net.blobs('conv2').get_data();
vis_square(ddata,,);
function vis_square(data,padsize,padval) data=net_data_normalize(data); if ~ exist('padsize', 'var')
padsize=;
end
if ~ exist('padval', 'var')
padval=;
end
ndim=ndims(data);
% w*num*h*chanel
if ndim==
fprintf('visualize params\n');
data=permute(data,[,,,]);
else ndim==
fprintf('visualize maps\n');
data=permute(data,[,,]);
end n = (ceil(sqrt(size(data,))));
data=padarray(data,[padsize n^-size(data,) padsize ],'post');
data=reshape(data,size(data,),n,n,size(data,),size(data,));
data=permute(data,[,,,,]);
data=reshape(data,[size(data,)*n,size(data,)*n,size(data,)]); figure
if ndim==
;
else ndim==
data=imrotate(data,-);
end imshow(imresize(data,[,],'nearest')) end
matlab列优先与高维矩阵重构 及 CNN 逐层可视化 on Matlab的更多相关文章
- Matlab命令合集 妈妈再也不用担心我不会用matlab了
matlab命令 一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变 ...
- (转)思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
转自:http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用1. ...
- C++与Matlab混合编程之:矩阵数据结构
项目需要将matlab代码写成C++,准备用opencv.opencv中矩阵的存储与matlab有所不同,应注意以下问题: 1.matlab中矩阵是按照列优先存储的.对于n0*n1*...*nn维的矩 ...
- Matlab、R向量与矩阵操作 z
已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作 描 述 Matla ...
- Matlab、R向量与矩阵操作
Matlab.R向量与矩阵操作 描 述 Matlab R 1 建立行向量v=[1 2 3 4] v=[1 2 3 4] v<-c(1,2,3,4)或v<-scan(),然后输入 ...
- matlab global 不能传向量/矩阵
matlab global 不能传向量/矩阵 只能传1个数值 而函数变量可以传向量/矩阵
- C语言 数组 列优先 实现
C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...
- C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why?
C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why? 简单粗暴的答案:存在Cache机制! 稍微啰嗦一点:CPU访问内存(读/写,遍历数组的话主要是读) ...
- 二维数组 A[m][n] 按行优先和按列优先的 下标地址转换公式
设二维数组 A[m][n] 按行优先存储, 每个元素占 p 个字节, 则 Loc(i, j) 的地址为 (i * n + m) * p, 第 i 行前面有 i 行, 每行有 n 个元素, 加上 第 i ...
随机推荐
- hdoj 5139Formula
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5139 展开后的:1!*2!*3!*..*n! 后面就好办了- -
- Labview调用Python脚本
Labview程序框图如下: Python脚本如下: #!/usr/bin/env pythonimport sys #Command Line Arguements are stored in li ...
- LeetCode 3 Longest Substring Without Repeating Characters 区间,想法 难度:1
https://leetcode.com/problems/longest-substring-without-repeating-characters/ 思路:从某点结束所能取到的最早开头是到目前出 ...
- js归并排序法
function mergeSort(arr) { var len = arr.length; if(len > 1) { var index = Math.floor(len / 2); le ...
- Socket编程 -- 全双工通信
//这是客户端package com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...
- JSP内置对象---请求重定向与请求转发的区别
视频地址:http://www.imooc.com/video/3306 方便理解:
- Eclipse中的一些快捷键的使用
Eclipse是一款强大的编程工具,在使用的过程中,若能够有效的使用其快捷键,效率会得到很大的提升,下面是一些常用的eclipse快捷键,可谓是键键精彩. 1.成单词:Alt+/ 2 重构之重命名:S ...
- vim自动补全功能
1.首先下载一个插件:ctags 输入:sudo apt-get install ctags 2.Ctrl+n进行单词的自动补全
- Command Pattern
当(客户)对象访问(服务)请求服务时,最直接的方法就是方法调用.
- java之DatagramSocket、DatagramPackage丶MulticastSocket 广播学习
1.基本概念: a.DatagramPacket与DatagramSocket位于java.net包中 b.DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送 ...