美文网首页
CNN的笔记

CNN的笔记

作者: 迅速傅里叶变换 | 来源:发表于2017-06-11 11:04 被阅读55次

    google CNN 视频教程
    如果你的数据具有某种结构,但你的网络并不需要从头开始学习这个结构,他可能表现的更好,比如字母或者数字的分类识别,这里,即使,数据是RGB结构,颜色不是分类的重要因素,可以采用灰度模型进行分类。

    如果你的任务只是确定图片中是否有物体,而不需要指明物体在图片中的位置,这就是平移不变性,位置不一样,但是物体是一样的,在文本中也是一样,有些时候不需要关心你考察的文字在文本的哪个段落,这叫权重共享,当知道两个输入包含相同的信息时,你可以共享他们的权重,并利用这些输入共同训练权重,统计不变性,基本不会随时间空间改变,对于图像,可以使用卷积神经网络,对于一般的文本和序列,则涉及嵌入和循环神经网络。

    卷积神经网络是在空间上共享参数的一种神经网络,假设你有一张具有宽度高度和深度的图片,深度是指图片的RGB三色通道,现在拿出图片的一小块(patch),运行一个具有K个输出的小神经网络,在不改变权重的情况下,把这个小神经网络滑过整个图片,这样他的深度宽度长度都与输入不同,得到K个颜色通道,这种操作就叫卷积,如果patch的大小与整个图片一样,那他和普通的神经网络没有区别,正因为有了较小的patch,并且共享权重,卷积网络则是一个深度网络,总的想法是他们形成金字塔形状,底部是一个大而浅的图片,并有3 个颜色通道,通过卷积操作不断挤压空间维度,同事不断增加深度,在顶端,可以放一个分类器,所有空间被压缩成一个表示。patch又是也叫作核(kernel),另一个重要概念是stride(步幅),它是移动过滤器时平移像素的数量,步幅为1时,输出尺寸与输入大体相同,步幅为2时尺寸为一半,大体是因为取决于在图像边界怎么做,如果从不超过边界,叫有效填充(valid padding),如果超过边界并有0填充,就回到与输入相同大小的输出图,叫相同填充(same padding)。

    如果使用相同填充且步幅为1,则输出高度与宽度与输入相同,我们想输入图像添加0只为了让尺寸相同,如果是有效填充步幅为1,则不会存在填充,如果你不适用填充且要让你的小过滤器与输入图像匹配,则需要在图片的一半溢出一列和一行,因此宽度长度减2,如果步幅为2,则减一半。

    Padding Stride Width Height Depth
    Same 1 28 28 8
    Valid 1 26 26 8
    Valid 2 13 13 8

    就是这样,你可以构建一个简单的卷积网络,你不必自己实现把卷积叠加起来,然后尝试使用降维的方法,一层一层的增加网络深度,一旦你得到一个既深又窄的表示,把所有这些连接到基层常规的全连接层(fully connected layer),你就可以训练你的分类器了,你可能好奇训练和链式法则是怎样,特别是当想这样使用共享权重时,其实啥也没发生,就和公式一样,你只是将图片中所有位置的微分叠加了起来。注意,全连接层是一个标准的非卷积层,将所有输入连接到输出的神经元上,也叫密集层。

    池化(poling)能更好的降低金字塔中特征图的空间范围,目前为止,我们已经使用调整的步幅来平移滤波器,每次移动几个像素从而降低特征图的尺寸,他移除了很多信息,如果我们不采用每两个卷积跳过一个,而依然执行非常小的步幅,比如说1,但是我们通过某种方法把向邻近的所有卷积结合在一起,这就叫池化,最常见的是max pooling,在特征图的每一个点,查看它周围很小范围的点,计算附近所有点的最大值,使用最大池化有很多优点,首先,他不会增加参数数量,所有不用担心过拟合,其次,他通常会提高模型的准确性,然而,由于在非常低的步幅下进行卷积,模型必然需要更多的计算量,且有更多的超参数需要调整,比如池区尺寸和池化步幅,他们不必完全一样,一种典型的卷积神经网络为几层卷积和最大池化交替,然后在最末端连接几层全连接层。另一种形式是平均池化,相比于采用最大值,采用了周围像素窗口的平均值,像是给输入图片提供了一个低分辨率图片。

    1*1 convolutions.他关注的不是图像,而仅仅是像素,传统的卷积基本上是运行在一小块图像上的小分类器,但仅仅是线性分类器,但如果加上了1*1卷积,运行在一块图像上的神经网络代替了线性分类器,在军及分布中三步一些1*1卷积是一种使模型变得更深的低时高效的方法,并且会有更多参数,但并未完全改变神经网络结构。

    Inception module。它的原理是在你的卷积网络的每一层,你可以选择池化运算,卷积运算,然后你需要决定使用1*1、3*3还是5*5大小的卷积,所有这些实际上对你的网络的建模能力都是有益的,所以何必选呢,把他们都选上吧,inception模型就是这样的,他不是一个单一的卷积,而是平均池化后跟1*1,然后是1*1卷积,然后1*1后跟3*3,然后1*1后跟5*5,然后在顶部,你只需要链接每个的输出即可,看起来很复杂,但有趣的是,你可以选择这些参数,是模型的参数总数要小,而且比简单的卷积网络要好。

    相关文章

      网友评论

          本文标题:CNN的笔记

          本文链接:https://www.haomeiwen.com/subject/serhqxtx.html