卷积神经网络(CNN)的理解与总结
卷积神经网络模型的历史演化:
0. 核心思想
- two main ideas:
- use only local features
- 在不同位置上使用同样的特征;
- 池化层的涵义在于,更高的层次能捕捉图像中更大的范围和区域;
1. feature map
依然是 feature map(特征映射),再次可见,深度神经网络其实就是一种 feature learning 框架。
如何获取一幅图像(输入图像)的特征映射(将原始图像映射到其特征空间中):
- 用一个线性滤波器(linear filter)对输入图像进行卷积,
- 加上一定的 bias
- 将一个非线性函数应用在 卷积+bias 的结果上;
数学的方式描述如下:
将给定层对应的 feature map 记为 h(k)(也即任一层都可能存在多重 feature maps,以便获得更为丰富的特征表示,{h(k),k=0,…,K}),它们(h(k),feature maps)各自对应的滤波器由权值矩阵 W(k) 和 bias b(k) 确定:
2. 卷积操作实战
二维卷积算子接口所在:
- theano.tensor.nnet.conv.conv2d:最常使用;
- theano.tensor.signal.conv2d:只作用在单 channel 的输入上
这两个函数接收两个符号输入:
input:4D 的 tensor,各个维度分别对应于,
- mini-batch
- number of input feature maps,比如一副彩色图像,对应着 3 个色彩通道(RGB)
- image height
- image width
weight Matrix W,其维度为:
- number of feature maps at layer m(后一层)
- number of feature maps at layer m-1(前一层)
- filter height
- filter width
import numpy as np
import theano.tensor as T
from theano.tensor.nnet import conv
rng = np.random.RandomState(23455);
inpt = T.sensor4(name='inpt')
W_shp = (2, 3, 9, 9) # 第一维是 2,表示下一层的 map 数,
# 第二维是 3,表示前一层的 map 是三(也就是 RGB),
W_bound = np.sqrt(3*9*9)
W = theano.shared(
np.asarray(
rng.uniform(
low=-1./W_bound,
high=1./W_bound,
size=W_shp,
)
dtype=theano.config.floatX
), name='W'
)
b_shp = (2, ) # 下一层的 maps 数
b = theano.shared(np.asarray(rng.uniform(low=-.5, high=.5, size=b_shp), dtype=theano.config.floatX), name='b')
conv_out = conv.conv2d(inpt, W)
output = T.nnet.sigmoid(conv_out + b.dimshuffle('x', 0, 'x', 'x')) # b 从 (2, ) ⇒ (1, 2, 1, 1)
f = theano.function([inpt], output)
3. maxpooling
max-pooling 本质上是一种非线性的降采样(down-sampling)。Maxpooling 机制将输入图像划分为不重叠的矩形区域,对于每一个子区域,输出其中的最大值。
maxpooling 之所以能在计算机视觉中应用基于以下两个原因:
- 通过排除一些不是最大值的点,降低上一层的计算复杂度;
它提供了一种平移不变性(translation invariance)的变换;
maxpooling 具有平移不变性,指的是,执行 maxpooling 之后得到的 feature map,不会因图像的平移而发生改变,而影响后续的处理结果。
考虑 2*2 的 maxpooling 窗口,对于一个 2*2 的图像子区域,2*2 的图像子区域存在 8 个可行的平移方向(仅移动一个像素),分别是(上下左右,左上右上左下右下),此时针对这 8 种情况下,如下图:
只有右侧的三种情况,会使在原有位置上(中心的 4 个点)执行 maxpooling 后获得的最大值和未发生平移变化之前的是一致的,也即对平移保持不变;
同理对于 3*3 的图像子区域,也是 8 个可以平移的方向,只有其中的 5 个保持平移不变。
卷积神经网络(CNN)的理解与总结的更多相关文章
- 卷积神经网络(CNN)前向传播算法
在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(一)
卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 卷积神经网络CNNs的理解与体会
https://blog.csdn.net/shijing_0214/article/details/53143393 孔子说过,温故而知新,时隔俩月再重看CNNs,当时不太了解的地方,又有了新的理解 ...
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献中 ...
- 深度学习之卷积神经网络CNN
转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...
- 深度学习之卷积神经网络CNN及tensorflow代码实例
深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例
深度学习之卷积神经网络CNN及tensorflow代码实现示例 2017年05月01日 13:28:21 cxmscb 阅读数 151413更多 分类专栏: 机器学习 深度学习 机器学习 版权声明 ...
随机推荐
- python2.7一步步实现键盘和鼠标检测
由于现在python3的pyHook库还没有很完善: 所以选择了python2.7版本 关于环境的搭建 python2.7 用的是anaconda,直接去官网下载去安装就好用,不需要配置环境变量的, ...
- WPF遍历当前容器中某种控件的方法
原文:WPF遍历当前容器中某种控件的方法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/79 ...
- embed-it_Integrator memory compile工具使用之一
embed-it_Integrator memory compile工具使用之一 主要内容 使用Integrator compile memory 使用Integrator 对比筛选适合的memory ...
- 【Python排序搜索基本算法】之拓扑排序
拓扑排序是对有向无环图的一种排序,满足例如以下两个条件: 1.每一个顶点出现且仅仅出现一次. 2.若A在序列中排在B的前面.则在图中不存在从B到A的路径. 如上的无环有向图,v表示顶点:v=['a', ...
- ios 获取button所在的cell对象, 注意:ios7 =< System Version < ios8 获取cell对象的差别
ios7 =< System Version< ios8 : ios7 =< System Version < ios8 下 button.superview.supervi ...
- SAP ABAP编程 字符串加密-MD5_CALCULATE_HASH_FOR_CHAR
DATA: str1 TYPE c LENGTH 12 VALUE 'zxcv', str2 TYPE c LENGTH 32, str3 TYPE c LENGTH 32. ...
- mysql分区功能(三个文件储存一张表)(分区作用)(分区方式)
mysql分区功能(三个文件储存一张表)(分区作用)(分区方式) 一.总结 1.mysql数据表的存储方式(三个文件储存一张表): 一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放 ...
- 【读书笔记与思考】Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...
- Codeforces 491B. New York Hotel 最远曼哈顿距离
最远曼哈顿距离有两个性质: 1: 对每一个点(x,y) 分别计算 +x+y , -x+y , x-y , -x-y 然后统计每种组合的最大值就能够了, 不会对结果产生影响 2: 去掉绝对值 , 设 ...
- 动态创建Fragment
在android3.0之前.每创建一个界面就要新创建一个activity. 在3.0之后引入了Fragment.相当于一个轻量级的activity.不须要在清单文件配置. 先来看下怎样创建和使用Fra ...