【ufldl tutorial】Convolution and Pooling
卷积的实现:
对于每幅图像,每个filter,首先从W中取出对应的filter:
filter = squeeze(W(:,:,filterNum));
接下来startercode里面将filter旋转90度并且取出image:
% Flip the feature matrix because of the definition of convolution, as explained later
filter = rot90(squeeze(filter),2); % Obtain the image
im = squeeze(images(:, :, imageNum));
然后进行卷积,注意这里要用conv2的valid模式,因为这里的卷积不对图像边界之外的像素进行操作:
%%% YOUR CODE HERE %%%
convolvedImage = conv2(im,filter,'valid');
最后加上偏置b并且作用一个sigmoid函数,最终得到的featuremap放到convolvedFeatures里面:
%%% YOUR CODE HERE %%%
convolvedImage = bsxfun(@plus,convolvedImage,b(filterNum));
convolvedImage = 1 ./ (1+exp(-convolvedImage)); convolvedFeatures(:, :, filterNum, imageNum) = convolvedImage;
完整的实现参见我的github
Pooling的实现:
对于每幅图像的每一个卷积操作得到的featuremap,首先从convolvedFeatures中取出对应的featuremap:
featuremap = squeeze(convolvedFeatures(:,:,featureNum,imageNum));
这里的pooling是通过卷积实现的,如下图所示:

上图第一个正方形表示4*4的featuremap,假设poolDim的大小是2*2,用一个(poolDim*poolDim)的filter对图像进行卷积操作,得到第二个正方形;最后进行步长为poolDim的采样,就得到最后pooling之后的featuremap——第三个正方形。注意这样使用mean pooling,所以filter设置成一个(poolDim*poolDim),值为1/(poolDim*poolDim)的正方形矩阵就可以达到这个目的了,代码如下:
%%% YOUR CODE HERE %%%
for imageNum = 1:numImages
for featureNum = 1:numFilters
featuremap = squeeze(convolvedFeatures(:,:,featureNum,imageNum));
pooledFeaturemap = conv2(featuremap,ones(poolDim)/(poolDim^2),'valid');
pooledFeatures(:,:,featureNum,imageNum) = pooledFeaturemap(1:poolDim:end,1:poolDim:end);
end
end
两个for中第一行代码得到featuremap,第二行进行卷积求平均值,第三行进行采样并把结果放到pooledFeatures中。
完整代码参见我的github。
【ufldl tutorial】Convolution and Pooling的更多相关文章
- 【ufldl tutorial】Softmax Regression
今天太长姿势了,什么叫懂了也写不出代码说的不就是我吗,就那么几行代码居然叽叽歪歪写了一个小时. 首先exercise要实现的是softmax的cost function和gradient,如下图: ( ...
- emacs 新手笔记(一) —— 阅读【emacs tutorial】
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 [emacs tutorial]是熟悉 emacs 的入门资料.一共几十个命令,不需硬记,勤练即可. 翻页命 ...
- 【DeepLearning】Exercise:Convolution and Pooling
Exercise:Convolution and Pooling 习题链接:Exercise:Convolution and Pooling cnnExercise.m %% CS294A/CS294 ...
- 【UFLDL】Exercise: Convolutional Neural Network
这个exercise需要完成cnn中的forward pass,cost,error和gradient的计算.需要弄清楚每一层的以上四个步骤的原理,并且要充分利用matlab的矩阵运算.大概把过程总结 ...
- 【面向代码】学习 Deep Learning(三)Convolution Neural Network(CNN)
========================================================================================== 最近一直在看Dee ...
- 转【面向代码】学习 Deep Learning(二)Deep Belief Nets(DBNs)
[面向代码]学习 Deep Learning(二)Deep Belief Nets(DBNs) http://blog.csdn.net/dark_scope/article/details/9447 ...
- 【Deep Learning】两层CNN的MATLAB实现
想自己动手写一个CNN很久了,论文和代码之间的差距有一个银河系那么大. 在实现两层的CNN之前,首先实现了UFLDL中与CNN有关的作业.然后参考它的代码搭建了一个一层的CNN.最后实现了一个两层的C ...
- 【Spring实战】----开篇(包含系列目录链接)
[Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...
- 【paddle学习】图像分类
https://zhuanlan.zhihu.com/p/28871960 深度学习模型中的卷积神经网络(Convolution Neural Network, CNN)近年来在图像领域取得了惊人的成 ...
随机推荐
- 多校3-Magician 分类: 比赛 2015-07-31 08:13 4人阅读 评论(0) 收藏
Magician Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 遍历寻找json中的重复数据
string str = "[{\"ID\":1,\"Data\":{\"subjectCode\":\"1\" ...
- 2017年1月6日 星期五 --出埃及记 Exodus 21:32
2017年1月6日 星期五 --出埃及记 Exodus 21:32 If the bull gores a male or female slave, the owner must pay thirt ...
- linux中的shell脚本编程
[1]shell脚本 1--- shell命令 2--- 控制语句(新的语法) (Shell命令的有序集合) [2]创建shell脚本文件 1--- 1.sh 2--- chmod 777 1.sh ...
- mfc截图
1.进入截图状态 PRTSCRING = TRUE;//开始截图标志为TRUE AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED);//主窗口最大化 Se ...
- SD卡驱动分析(一)
Android下的SD卡驱动与标准LINUX下的SD卡驱动好像没有太大的区别,这里就以高通的ANDROID 2.3以代表,来简要分析一下LINUX下SD卡驱动的写法.由于小弟的技术有限,分析的有错的地 ...
- BZOJ 1835 基站选址(线段树优化DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1835 题意:有N个村庄坐落在一条直线上,第 i(i>1)个村庄距离第1个村庄的距离 ...
- jquery之 animate()方法详解
jQuery.animate() 函数详解 animate()函数用于执行一个基于css属性的自定义动画. 你可以为匹配的元素设置css样式,animate()函数将会执行一个从当前样式到指定的css ...
- excel在一个图表内,显示折线图和柱状图
折线图和柱状图,在同一个图表中拆分显示 一个图,设置主坐标轴 另外一个图,设置次坐标轴 拆分,通过调整纵坐标的最小值和最大值来实现 关于图表的标题,选中图表,选择布局,然后图表 ...
- Formatting Excel File Using Ole2 In Oracle Forms
Below is the some useful commands of Ole2 to format excel file in Oracle Forms.-- Change font size a ...