1. 之前课程里,一个32*32*3的图像被展成3072*1的向量,左乘大小为10*3072的权重矩阵W,可以得到一个10*1的得分,分别对应10类标签。

在Convolution Layer里,图像保持原样,依旧是32*32*3,把它和一个5*5*3的filter进行卷积运算(filter和原图像有相同的通道数,比如这里都是3)。这里的“卷积”并不是严格按照信号处理里先把图像翻转,这里只是对应像素乘积累加,可以按照fully connected layer的写法,把5*5*3的filter展开成75*1,原图像也抠出同样大小的一块并展开成一维,然后线性运算wTx+b。如此运算后,最终得到28*28*1的结果(32-5+1=28),名字叫activation map。每一个filter实际代表一种特征,通过卷积查看原图的各个局部位置与这个特征的匹配程度。实际处理中会用好多个不同的filter,如果用了6个,则得到28*28*6的“新图像”。卷积是线性运算,所以之后还要再跟一个非线性的激活函数(比如ReLU)。几个卷积层之后,还会再用一个POOL(池化层:池化层的输入一般来源于上一个卷积层,主要作用是增强鲁棒性,并且减少了参数的数量,防止过拟合现象的发生)。

卷积神经网络实际就是一系列的类似卷积层的堆叠。从底层到高层的卷积层对应的特征越来越复杂。

2. 上一部分的卷积过程是每次平移一个像素(stride=1),可以移动几个像素,最终输出大小是(N-F)/stride+1,这里假设图像是N*N,filter是F*F。输出大小必须是整数,如果不是的话,stride就不能取这个数。

还有两个问题:1)每次卷积会缩小图片,对于卷积层很多的深度学习网络,图片会很快缩的非常小。2)丢失了边缘信息。为了解决这个问题,实际操作中,会在图像周边补0,这时候输出大小是(N+2*P-F)/stride+1,这里P是两边各补的0的个数。

总结一下:

输入图片大小是W1*H1*D1

Hyperparameters:1)filter的数量K,一般取2的指数个,比如32,64,128,512。

2)filter的大小F,一般取1,3,5。(边长为1的filter是有意义的,因为这相当于是对每个像素的各个通道加权求和。)

3)步长stride S,一般取1,2。stride有降低图片分辨率的作用,或者说降采样。

4)单边补零的个数P。

输出图片大小是W2*H2*D2:

1)W2=(W1-F+2P)/S+1.

2)H2=(H1-F+2P)/S+1.

3)D2=K。

一共F*F*D1*K个权重参数,K个bias参数。

3. Pooling Layer:对图片降采样。

最常用的是Max pooling:降采样时取一个小区域里的最大值。可以这么直观理解,比如我们想在一个小区域里找某个特征,这个小区域内任何一处的值很高,都代表我们在这个小区域找到了这个特征,所以用它来表征这个区域。

卷积过程的步长stride大于1和pooling都是为了降采样,二者并不是必须有的,根据实际问题调整架构。

总结一下:

输入图片大小是W1*H1*D1

Hyperparameters:1)pooling的大小F,一般取2,3。

2)步长stride S,一般取2。

输出图片大小是W2*H2*D2:

1)W2=(W1-F)/S+1.

2)H2=(H1-F)/S+1.

3)D2=D1

不引入新的参数,并且一般不会补0。

cs231n spring 2017 lecture5 Convolutional Neural Networks的更多相关文章

  1. cs231n spring 2017 lecture5 Convolutional Neural Networks听课笔记

    1. 之前课程里,一个32*32*3的图像被展成3072*1的向量,左乘大小为10*3072的权重矩阵W,可以得到一个10*1的得分,分别对应10类标签. 在Convolution Layer里,图像 ...

  2. cs231n spring 2017 lecture10 Recurrent Neural Networks 听课笔记

    (没太听明白,下次重新听一遍) 1. Recurrent Neural Networks

  3. cs231n spring 2017 lecture10 Recurrent Neural Networks

    (没太听明白,下次重新听一遍) 1. Recurrent Neural Networks

  4. cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记

    1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...

  5. cs231n spring 2017 lecture7 Training Neural Networks II

    1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...

  6. cs231n spring 2017 lecture6 Training Neural Networks I 听课笔记

    1. 激活函数: 1)Sigmoid,σ(x)=1/(1+e-x).把输出压缩在(0,1)之间.几个问题:(a)x比较大或者比较小(比如10,-10),sigmoid的曲线很平缓,导数为0,在用链式法 ...

  7. cs231n spring 2017 lecture6 Training Neural Networks I

    1. 激活函数: 1)Sigmoid,σ(x)=1/(1+e-x).把输出压缩在(0,1)之间.几个问题:(a)x比较大或者比较小(比如10,-10),sigmoid的曲线很平缓,导数为0,在用链式法 ...

  8. cs231n spring 2017 lecture8 Deep Learning Networks 听课笔记

    1. CPU vs. GPU: CPU核心少(几个),更擅长串行任务.GPU有很多核心(几千个),每一个核都弱,有自己的内存(几个G),很适合并行任务.GPU最典型的应用是矩阵运算. GPU编程:1) ...

  9. CS231n笔记 Lecture 5 Convolutional Neural Networks

    一些ConvNets的应用 Face recognition 输入人脸,推测是谁 Video classfication Recognition 识别身体的部位, 医学图像, 星空, 标志牌, 鲸.. ...

随机推荐

  1. 【论文笔记系列】AutoML:A Survey of State-of-the-art (下)

    [论文笔记系列]AutoML:A Survey of State-of-the-art (上) 上一篇文章介绍了Data preparation,Feature Engineering,Model S ...

  2. 本地搭建3节点kubernetes

    kubernetes本地搭建版本选择 CentOS Linux release 7.7.1908 kubernetesVersion: v1.17.0 weave-kube:2.6.0 ceph/ce ...

  3. HashMap源码分析(一)

    基于JDK1.7 HashMap源码分析 概述 HashMap是存放键值对的集合,数据结构如下: table被称为桶,大小(capacity)始终为2的幂,当发生扩容时,map容量扩大为两倍 Hash ...

  4. 谈谈 Act 的依赖注入 和 模板输出 - 回答 drinkjava 同学提问

    1. 背景 依赖注入工具 jBeanBox 的作者 drinkjava 同学最近在 Actframework gitee 项目 的提出了如下评论: 你这个DI工具的出发点可能有问题,一个MVC工具为什 ...

  5. PAT Basic 1070 结绳(25) [排序,贪⼼]

    题目 给定⼀段⼀段的绳⼦,你需要把它们串成⼀条绳.每次串连的时候,是把两段绳⼦对折,再如下图所示套接在⼀起.这样得到的绳⼦⼜被当成是另⼀段绳⼦,可以再次对折去跟另⼀段绳⼦串连.每次串 连后,原来两段绳 ...

  6. block内存篇

    本文目的:对Block内存问题更加了解 概念理解:一种数据类型或比较特殊的对象,相当于一个指向函数的指针,该指针指向一段封装代码,调用block块代码好比调用该指针指向的函数代码 block分类: N ...

  7. 03-string字符串和while循环

    目录 03-string字符串和while循环 1. string介绍 2. 字符串的运算 3. 下标及分片 4. 格式化输出 5. f-string格式化输出用法 6. 字符串方法 7. 布尔值,空 ...

  8. 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证

    登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...

  9. 1. 模块化的引入与导出 (commonJS规范 和ES6规范)

    node组件导出模块 node一般用commonJS规范 可以通过module.exports导出自己写的模块 这样其他的js文件就可以引用并使用这个模块 module.exports = { log ...

  10. ubuntu下Django的搭建

    工具:Window下的pycharm .VirtualBox下的Ubuntu系统.非必需的Xshell(远程连接工具) 现在针对各种包或python版本不能共存或包不能很好下载的问题,开始流行使用虚拟 ...