可視化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都行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM