zoukankan      html  css  js  c++  java
  • 可视化CNN神经网路第一层参数

    在上Andrew Ng的课的时候搜集到了课程里面自带的显示NN参数的代码,但是只能显示灰度图,而且NN里的参数没有通道的概念。所以想要获得可视化CNN的参数,并且达到彩色的效果就不行了。

    所以就自己写了一个,对了,是Matlab脚本哈。

     

    function olDisplayFilter(filter, pad)
    %% !Only Show the 1st-3rd channel of filter
    
    %%
    if nargin == 1
        % Between images padding
        pad = 1;
    end
    
    [M, N, P, Q] = size(filter);
    width = ceil(sqrt(Q));
    displayArray = zeros(pad + width * (M+pad), pad + width* (N+pad), 3);
    
    
    count = 1; 
    for i = 1 : width
        for j =1 : width
            if count > Q
                break;
            end
                    
            f_ = filter(:, :, 1:3, count);
            absMinVal = abs(min(f_(:)));
            f_ = f_ + absMinVal;
            absMaxVal = max(abs(f_(:)));
            f_ = f_ / absMaxVal;
            
            displayArray(pad + (i - 1) * (M + pad) + (1 : M),...
                        pad + (j - 1) * (N + pad) + (1: N), :) ...
                        = f_;
            count = count + 1;
        end
    end
    
    imagesc(displayArray, [-1, 1]);
    
    axis image off
    drawnow;
    end
    

      最后得到的效果就是这个样子的:

    cnn

    这个图是加载了imagenet的训练结果第一层参数的效果图,训练结果下载地址在这里:

    http://www.vlfeat.org/matconvnet/models/imagenet-vgg-f.mat

    下载完成这个mat文件后,如果想复现上面这个图的话运行一下这句话:olDisplayFilter(layers{1}.filters) 就可以了。

    另外要是对前面提到的Andrew Ng课程里面显示神经网络参数的代码感兴趣的话,可以戳https://github.com/OleNet/OleNetLib/tree/master/MatLiB,里面的olDisplayNetwork.m和olDisplayData.m都行

  • 相关阅读:
    matlab cell
    matlab linux 快捷键设置——有问题还是要解决
    latex 小结
    TOJ 1258 Very Simple Counting
    TOJ 2888 Pearls
    HDU 1248 寒冰王座
    TOJ 3486 Divisibility
    TOJ 3635 过山车
    TOJ 1840 Jack Straws
    HDU 4460 Friend Chains
  • 原文地址:https://www.cnblogs.com/OleNet/p/4456731.html
Copyright © 2011-2022 走看看