matlab列优先与高维矩阵重构

由于matlab在列化a(:)以及reshape(a)等操作中是列优先的,所以要重构出新的高维度矩阵,通常要把reshape和permute结合起来使用。

先到 http://caffe.berkeleyvision.org/ 下载 训练好的model bvlc_reference_caffenet.caffemodel;

更多caffe使用也请参看上面的网址。

 1  clear
 2  close all
 3 
 4 
 5 addpath ./matlab
 6 
 7 model= './models/bvlc_reference_caffenet/deploy.prototxt';
 8 weights= './models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel';
 9 
10  
11  net = caffe.Net(model, weights, 'test'); % create net and load weights
12 
13 %% obtain params in diff layers and show
14 pdata = net.params('conv1',1).get_data();
15 
16 vis_square(pdata,2,0.5);
17  
18   
19 net.blobs('data').reshape([227 227 3 1]);
20 net.reshape();
21 
22 %% prepare the image
23 im_data = caffe.io.load_image('./examples/images/cat.jpg');
24  mean = load('./matlab/+caffe/imagenet/ilsvrc_2012_mean.mat');
25 
26 %% subtract mean_data (already in W x H x C, BGR)
27  mean_data = mean.mean_data;
28  im_data = im_data - mean_data;  
29 
30  width = 227; height = 227;
31  im_data = imresize(im_data, [width, height]); % resize using Matlab's imresize
32  res = net.forward({im_data});
33 
34  prob = res{1};
35 
36 %% obtain features and show
37  ddata = net.blobs('conv2').get_data();
38  vis_square(ddata,2,0);

MPCA可用于高维数据进行降维可与LDA结合 

 1 function vis_square(data,padsize,padval)
 2 
 3  data=net_data_normalize(data);
 4 
 5 if ~ exist('padsize', 'var') 
 6   padsize=1;
 7 end
 8 if ~ exist('padval', 'var') 
 9   padval=0;
10 end
11 ndim=ndims(data);
12 % w*num*h*chanel
13 if ndim==4
14     fprintf('visualize params\n');
15     data=permute(data,[1,4,2,3]);
16 else ndim==3
17     fprintf('visualize maps\n');
18     data=permute(data,[1,3,2]);
19 end
20     
21     n = (ceil(sqrt(size(data,2))));
22     data=padarray(data,[padsize n^2-size(data,2) padsize 0],'post');
23     data=reshape(data,size(data,1),n,n,size(data,3),size(data,4));
24     data=permute(data,[1,3,4,2,5]);
25     data=reshape(data,[size(data,1)*n,size(data,3)*n,size(data,5)]);
26    
27 figure
28 if ndim==4
29     ;
30 else ndim==3
31     data=imrotate(data,-90);
32 end   
33 
34 imshow(imresize(data,[500,500],'nearest'))
35 
36 end

相关推荐

  1. MATLAB】 数据、矩阵、行、翻转

    2023-12-28 13:18:06       64 阅读
  2. MATLAB 重建类算法仿真经验技巧总结

    2023-12-28 13:18:06       58 阅读
  3. 重构优化-条件表达式优化(4)

    2023-12-28 13:18:06       28 阅读
  4. 重构优化-优化函数调用(5)

    2023-12-28 13:18:06       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 13:18:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 13:18:06       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 13:18:06       82 阅读
  4. Python语言-面向对象

    2023-12-28 13:18:06       91 阅读

热门阅读

  1. 【linux】select实现定时器

    2023-12-28 13:18:06       50 阅读
  2. mac配置subl命令打开sublime

    2023-12-28 13:18:06       51 阅读
  3. 网络安全领域的12个大语言模型用例

    2023-12-28 13:18:06       56 阅读
  4. Spring Boot学习:Flyway详解

    2023-12-28 13:18:06       62 阅读
  5. 机器学习笔记--图的基本表示和特征工程

    2023-12-28 13:18:06       65 阅读
  6. 6、docker 安装mysql8

    2023-12-28 13:18:06       54 阅读
  7. ARMday7

    ARMday7

    2023-12-28 13:18:06      55 阅读
  8. a-range-picker实现默认时间各种时分秒时间要求

    2023-12-28 13:18:06       63 阅读
  9. linux | pause函数 、alarm函数、signal函数

    2023-12-28 13:18:06       50 阅读
  10. Flink导入StarRocks

    2023-12-28 13:18:06       48 阅读