ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)
ufldl学习笔记与编程作业:Feature Extraction Using Convolution,Pooling(卷积和池化抽取特征)
ufldl出了新教程,感觉比之前的好,从基础讲起。系统清晰。又有编程实践。
在deep learning高质量群里面听一些前辈说。不必深究其它机器学习的算法。能够直接来学dl。
于是近期就開始搞这个了。教程加上matlab编程,就是完美啊。
新教程的地址是:http://ufldl.stanford.edu/tutorial/
这里用了conv2来算均值,能够优化性能。
记得。这里不须要激活函数。!!
- function convolvedFeatures = cnnConvolve(filterDim, numFilters, images, W, b)
- %cnnConvolve Returns the convolution of the features given by W and b with
- %the given images
- %
- % Parameters:
- % filterDim - filter (feature) dimension
- % numFilters - number of feature maps
- % images - large images to convolve with, matrix in the form
- % images(r, c, image number) % -------------注意维度的位置
- % W, b - W, b for features from the sparse autoencoder
- % W is of shape (filterDim,filterDim,numFilters)
- % b is of shape (numFilters,1)
- %
- % Returns:
- % convolvedFeatures - matrix of convolved features in the form
- % convolvedFeatures(imageRow, imageCol, featureNum, imageNum) % ----------注意维度的位置
- numImages = size(images, 3);
- imageDim = size(images, 1); %行数,即是高度。 这里没算宽度,貌似默认高宽相等。
- convDim = imageDim - filterDim + 1; % 卷积后,特征的高度
- convolvedFeatures = zeros(convDim, convDim, numFilters, numImages);
- % Instructions:
- % Convolve every filter with every image here to produce the
- % (imageDim - filterDim + 1) x (imageDim - filterDim + 1) x numFeatures x numImages
- % matrix convolvedFeatures, such that
- % convolvedFeatures(imageRow, imageCol, featureNum, imageNum) is the
- % value of the convolved featureNum feature for the imageNum image over
- % the region (imageRow, imageCol) to (imageRow + filterDim - 1, imageCol + filterDim - 1)
- %
- % Expected running times:
- % Convolving with 100 images should take less than 30 seconds
- % Convolving with 5000 images should take around 2 minutes
- % (So to save time when testing, you should convolve with less images, as
- % described earlier)
- for imageNum = 1:numImages
- for filterNum = 1:numFilters
- % convolution of image with feature matrix
- convolvedImage = zeros(convDim, convDim);
- % Obtain the feature (filterDim x filterDim) needed during the convolution
- %%% YOUR CODE HERE %%%
- filter = W(:,:,filterNum);
- % Flip the feature matrix because of the definition of convolution, as explained later
- filter = rot90(squeeze(filter),2); %squeeze是把仅仅有一个维度的那一维给去掉。
- 这里就是把第三维给去掉,三维变二维。
- % Obtain the image
- im = squeeze(images(:, :, imageNum));
- % Convolve "filter" with "im", adding the result to convolvedImage
- % be sure to do a 'valid' convolution
- %%% YOUR CODE HERE %%%
- convolvedImage =conv2(im, filter,"valid");%加上valid參数,以下代码不要了。
- %conv2Dim = size(convolvedImage,1);
- %im_start = (conv2Dim - convDim+2)/2;
- %im_end = im_start+convDim-1;
- %convolvedImage = convolvedImage(im_start:im_end,im_start:im_end);%取中间部分
- % Add the bias unit
- % Then, apply the sigmoid function to get the hidden activation
- %%% YOUR CODE HERE %%%
- convolvedImage = convolvedImage.+b(filterNum);
- convolvedImage = sigmoid(convolvedImage);
- convolvedImage = reshape(convolvedImage,convDim, convDim, 1, 1);%2维变维4维
- convolvedFeatures(:, :, filterNum, imageNum) = convolvedImage;
- end
- end
- end
- function pooledFeatures = cnnPool(poolDim, convolvedFeatures)
- %cnnPool Pools the given convolved features
- %
- % Parameters:
- % poolDim - dimension of pooling region
- % convolvedFeatures - convolved features to pool (as given by cnnConvolve)
- % convolvedFeatures(imageRow, imageCol, featureNum, imageNum)
- %
- % Returns:
- % pooledFeatures - matrix of pooled features in the form
- % pooledFeatures(poolRow, poolCol, featureNum, imageNum)
- %
- numImages = size(convolvedFeatures, 4);
- numFilters = size(convolvedFeatures, 3);
- convolvedDim = size(convolvedFeatures, 1);
- pooledFeatures = zeros(convolvedDim / poolDim, ...
- convolvedDim / poolDim, numFilters, numImages);
- % Instructions:
- % Now pool the convolved features in regions of poolDim x poolDim,
- % to obtain the
- % (convolvedDim/poolDim) x (convolvedDim/poolDim) x numFeatures x numImages
- % matrix pooledFeatures, such that
- % pooledFeatures(poolRow, poolCol, featureNum, imageNum) is the
- % value of the featureNum feature for the imageNum image pooled over the
- % corresponding (poolRow, poolCol) pooling region.
- %
- % Use mean pooling here.
- %%% YOUR CODE HERE %%%
- filter = ones(poolDim);
- for imageNum=1:numImages
- for filterNum=1:numFilters
- im = squeeze(squeeze(convolvedFeatures(:, :,filterNum,imageNum)));%貌似squeeze不要也能够
- pooledImage =conv2(im, filter,"valid");
- pooledImage = pooledImage(1:poolDim:end,1:poolDim:end);%取中间部分
- pooledImage = pooledImage./(poolDim*poolDim);
- %pooledImage = sigmoid(pooledImage); %不须要sigmoid
- pooledImage = reshape(pooledImage,convolvedDim / poolDim, convolvedDim / poolDim, 1, 1);%2维变维4维
- pooledFeatures(:, :, filterNum, imageNum) = pooledImage;
- end
- end
- end
版权声明:本文博客原创文章。博客,未经同意,不得转载。
ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)的更多相关文章
- ufldl学习笔记和编程作业:Softmax Regression(softmax回报)
ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...
- ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)
ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...
- ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)
ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...
- ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)
ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...
- ufldl学习笔记与编程作业:Linear Regression(线性回归)
ufldl学习笔记与编程作业:Linear Regression(线性回归) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听一些 ...
- 我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
一.什么是HOOK? "hook"这个单词的意思是"钩子","Windows Hook"是Windows消息处理机制的一个重要扩展,程序猿能 ...
- 大数据学习笔记——Hadoop编程实战之Mapreduce
Hadoop编程实战——Mapreduce基本功能实现 此篇博客承接上一篇总结的HDFS编程实战,将会详细地对mapreduce的各种数据分析功能进行一个整理,由于实际工作中并不会过多地涉及原理,因此 ...
- 大数据学习笔记——Hadoop编程实战之HDFS
HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...
- 学习笔记之编程珠玑 Programming Pearls
Programming Pearls (2nd Edition): Jon Bentley: 0785342657883: Amazon.com: Books https://www.amazon.c ...
随机推荐
- Oracle自带的exception
存储过程中自带的exception: --查询人员资料历史 BEGIN SELECT * INTO Po_Sac01 FROM Sac01 WHERE Aac001 = Pi_Aac001 ); EX ...
- USACO Runaround Numbers 模拟
根据题意的 Runaround 规则去找比当前数大的最近的一个 Runaround数字 模拟题~ Source code: /* ID: wushuai2 PROG: runround LANG: C ...
- HDU 5012 Dice DFS
简单DFS //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h ...
- beep的控制程序
参照艾米电子的程序进行改写的 //date : 2014,5,4 module for_beep ( clock , reset , out_beep ); input clock ,reset ; ...
- 插件化—配置xml的辅助测试
1.xml文件,xml文件在res/xml目录下 <?xml version="1.0" encoding="utf-8"?> <infos& ...
- Arduino 入门程序示例之直流电机(2015-06-15)
概述 演示直流电机的控制. 示例程序 PWM控制直流电机 略过控制电机转停的示例啦,有需要就把这里的 PWM 换成数字口输出 HIGH 或 LOW 就行了. // ------------------ ...
- 知识点1-2:ASP.NET MVC背景
1.发展阶段 CGI(公共网关接口)-->ASP(Active Server Pages,活动服务器页面)-->.NET 2. .NET平台 2002年初,微软发布了第一版.NET框架,这 ...
- HTTP1.1协议中文版-RFC2616
转自:http://www.cnpaf.net/Class/HTTP/200811/23277.html 说明 本文档规定了互联网社区的标准组协议,并需要讨论和建议以便更加完善.请参考 “互联网官方协 ...
- 用PowerMockito来mock私有方法(转)
话说我们做的所谓的接口测试真的是不伦不类啊,测的是controller层,那叫接口木??!!可是老大们说写的是接口测试,那就接口吧! 自接手写这个接口测试不久,很多人,包括一个关系比较好的架构师就跟我 ...
- mysql Emoji表情字符集转换
<pre name="code" class="html">Java代码 java.sql.SQLException: Incorrect stri ...