您的位置:首页 > 其它

MatConvNet基础—卷积,激活,池化层操作

2017-10-23 17:28 106 查看
卷积conv,激活Relu(还有Sigmoid激活),池化pooling是卷积神经网络CNN中最基础的操作值一,理解起来也非常的简单。

%%
%MatConvNet学习
%对于三通道RGB图像进行卷积,Relu激活,池化
%Date:2017-10-23
%Author:WPH
%Require:matlab2017b,matconvnet-1.0-beta25

%%
close all;
clear;
clc;

%载入图像
%50*50*3
image=imread('cat_head.jpg');
im_=single(image);

%滤波器组
%5*5*3@16
%注意:滤波器的通道数必须和输入图像的通道数匹配
filters1=randn(5,5,3,16,'single');
%偏置,每一个滤波器对应一个偏置
bias=randn(1,16,'single');

%卷积
featureMap1=vl_nnconv(im_,filters1,bias,'Stride',[1,1]);

%显示特征图
figure('name','卷积层');
for i=1:16
subplot(4,4,i);
imshow(uint8(featureMap1(:,:,i)));
end

%%
%激活
%Relu激活
featureActive1=vl_nnrelu(featureMap1,'leak',0);
figure('name','Relu激活层');
for i=1:16
subplot(4,4,i);
imshow(uint8(featureActive1(:,:,i)));
end

%%
%池化Pooling
%池化窗口大小pooling window
%池化步长stride,stride=[2,2],池化后的图像大为输入图像的一半
%边界扩充pad
%池化方式Method,最大池化max,平均池化avg
featurePool_1=vl_nnpool(featureActive1,[3,3],'Stride',[2,2],'Pad',[1,1,1,1],'Method','avg');
figure('name','pooling池化层');
for i=1:16
subplot(4,4,i);
imshow(uint8(featurePool_1(:,:,i)));
end


分析:

输入:50*50*3的一张RGB图像,图像内容是一个猫头

操作:依次进行卷积,Relu激活,池化



step1:卷积conv,MatConvNet中卷积计算采用vl_nnconv()函数。

y=vl_nnconv(x,filters,bias,’Stride’,’Pad’)

参数解释:x——–输入图像组

filters—滤波器组

bias—–滤波器的偏置

‘Stride’—滤波器滑动步长

‘Pad’—-图像边界填充



step2:Relu激活,比较简单。



step3:池化pooling

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: