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

来源:互联网 发布:淘宝商盟 编辑:程序博客网 时间:2024/05/16 06:24

卷积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*3image=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,平均池化avgfeaturePool_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’—-图像边界填充
50*50*16

step2:Relu激活,比较简单。
50*50*16

step3:池化pooling
25*25*16

阅读全文
0 0