怎么改成用乘法表格自动计算乘法公式各位的位权,并从输入二进制整数低位到高位


 表格自动计算乘法公式机视觉是┅个飞速发展的一个领域这多亏了深度学习。深度学习与表格自动计算乘法公式机视觉可以帮助汽车查明周围的行人和汽车,并帮助汽车避开它们还使得人脸识别技术变得更加效率和精准,你们即将能够体验到或早已体验过仅仅通过刷脸就能解锁手机或者门锁当你解锁了手机,我猜手机上一定有很多分享图片的应用在上面,你能看到美食酒店或美丽风景的图片。有些公司在这些应用上使用了深喥学习技术来向你展示最为生动美丽以及与你最为相关的图片机器学习甚至还催生了新的艺术类型。深度学习之所以让我兴奋有下面两個原因我想你们也是这么想的。

       第一表格自动计算乘法公式机视觉的高速发展标志着新型应用产生的可能,这是几年前人们所不敢想象的。通过学习使用这些工具你也许能够创造出新的产品和应用。

 其次即使到头来你未能在表格自动计算乘法公式机视觉上有所建樹,但我发现人们对于表格自动计算乘法公式机视觉的研究是如此富有想象力和创造力,由此衍生出新的神经网络结构与算法这实际仩启发人们去创造出表格自动计算乘法公式机视觉与其他领域的交叉成果。举个例子之前我在做语音识别的时候,我经常从表格自动计算乘法公式机视觉领域中寻找灵感并将其应用于我的文献当中。所以即使你在表格自动计算乘法公式机视觉方面没有做出成果我也希朢你也可以将所学的知识应用到其他算法和结构
       这是我们本节课将要学习的一些问题你应该早就听说过图片分类,或者说图片识别仳如给出这张64×64的图片,让表格自动计算乘法公式机去分辨出这是一只猫
 还有一个例子,在表格自动计算乘法公式机视觉中有个问题叫莋目标检测比如在一个无人驾驶项目中,你不一定非得识别出图片中的物体是车辆但你需要表格自动计算乘法公式出其他车辆的位置,以确保自己能够避开它们所以在目标检测项目中,首先需要表格自动计算乘法公式出图中有哪些物体比如汽车,还有图片中的其他東西再将它们模拟成一个个盒子,或用一些其他的技术识别出它们在图片中的位置注意在这个例子中,在一张图片中同时有多个车辆每辆车相对与你来说都有一个确切的距离。
 还有一个更有趣的例子就是神经网络实现的图片风格迁移,比如说你有一张图片但你想將这张图片转换为另外一种风格。所以图片风格迁移就是你有一张满意的图片和一张风格图片,实际上右边这幅画是毕加索的画作而伱可以利用神经网络将它们融合到一起,描绘出一张新的图片它的整体轮廓来自于左边,却是右边的风格最后生成下面这张图片。这種神奇的算法创造出了新的艺术风格所以在这门课程中,你也能通过学习做到这样的事情

       但在应用表格自动计算乘法公式机视觉时要媔临一个挑战,就是数据的输入可能会非常大举个例子,在过去的课程中你们一般操作的都是64×64的小图片,实际上它的数据量是64×64×3,因为每张图片都有3个颜色通道如果表格自动计算乘法公式一下的话,可得知数据量为12288所以我们的特征向量 x维度为12288。这其实还好洇为64×64真的是很小的一张图片。
       如果你要操作更大的图片比如一张的图片,它足有1兆那么大但是特征向量的维度达到了×3,因为有3个RGB通道所以数字将会是300万。如果你在尺寸很小的屏幕上观察可能察觉不出上面的图片只有64×64那么大,而下面一张是的大图
x的维度高达300萬。所以在第一隐藏层中你也许会有1000个隐藏单元,而所有的权值组成了矩阵 W[1]如果你使用了标准的全连接网络,就像我们在第一门和第②门的课程里说的这个矩阵的大小将会是万。因为现在 3m通常用来表示300万这意味着矩阵 W[1]会有30亿个参数,这是个非常巨大的数字在参数洳此大量的情况下,难以获得足够的数据来防止神经网络发生过拟合和竞争需求要处理包含30亿参数的神经网络,巨大的内存需求让人不呔能接受

       但对于表格自动计算乘法公式机视觉应用来说,你肯定不想它只处理小图片你希望它同时也要能处理大图。为此你需要进荇卷积表格自动计算乘法公式,它是卷积神经网络中非常重要的一块下节课中,我会为你介绍如何进行这种运算我将用边缘检测的例孓来向你说明卷积的含义。

       卷积运算是卷积神经网络最基本的组成部分使用边缘检测作为入门样例。在这个视频中你会看到卷积是如哬进行运算的。
       在之前的视频中我说过神经网络的前几层是如何检测边缘的,然后后面的层有可能检测到物体的部分区域,更靠后的┅些层可能检测到完整的物体这个例子中就是人脸。在这你会看到如何在一张图片中进行边缘检测。

 让我们举个例子给了这样一张圖片,让电脑去搞清楚这张照片里有什么物体你可能做的第一件事是检测图片中的垂直边缘。比如说在这张图片中的栏杆就对应垂直線,与此同时这些行人的轮廓线某种程度上也是垂线,这些线是垂直边缘检测器的输出同样,你可能也想检测水平边缘比如说这些欄杆就是很明显的水平线,它们也能被检测到结果在这。所以如何在图像中检测这些边缘

       看一个例子,这是一个6×6的灰度图像因为昰灰度图像,所以它是6×6×1的矩阵而不是6×6×3的,因为没有RGB三通道为了检测图像中的垂直边缘,你可以构造一个3×3矩阵在共用习惯Φ,在卷积神经网络的术语中它被称为过滤器。我要构造一个3×3的过滤器像这样 0 0 0 ???111?000??1?1?1????。在论文它有时候会被称為核而不是过滤器,但在这我将使用过滤器这个术语对这个6×6的图像进行卷积运算,卷积运算用“ ?”就是卷积的标准标志但是在PythonΦ,这个标识常常被用来表示乘法或者元素乘法所以这个“ ?”有多层含义,它是一个重载符号在这,当“ ?”表示卷积的时候会特別说明
       这个卷积运算的输出将会是一个4×4的矩阵,你可以将它看成一个4×4的图像下面来说明是如何表格自动计算乘法公式得到这个4×4矩阵的。为了表格自动计算乘法公式第一个元素在4×4左上角的那个元素,使用3×3的过滤器将其覆盖在输入图像,如下图所示然后进荇元素乘法(element-wise 0 0 0 0 0 0 0 ???3×11×12×1?0×05×07×0?1×(1)8×(?1)2×(?1)????=???312?000??1?8?2????,然后将该矩阵每个元素相加得到最左上角的元素即 0 0 0

0 0 0 0 0 0 0

       因此6×6矩阵和3×3矩阵进行卷积运算得到4×4矩阵。这些图片和过滤器是不同维度的矩阵但左边矩阵容易被理解为一张图片,中间的这個被理解为过滤器右边的图片我们可以理解为另一张图片。这个就是垂直边缘检测器

       在往下讲之前,多说一句如果你要使用编程语訁实现这个运算,不同的编程语言有不同的函数而不是用“ ?”来表示卷积。所以在编程练习中你会使用一个叫conv_forward的函数。如果在tensorflow下這个函数叫tf.conv2d。在其他深度学习框架中在后面的课程中,你将会看到Keras这个框架在这个框架下用Conv2D实现卷积运算。所有的编程框架都有一些函数来实现卷积运算

       你已经见识到用卷积运算实现垂直边缘检测,你将学习如何区分正边和负边这实际就是由亮到暗与由暗到亮的区別,也就是边缘的过渡你还能了解到其他类型的边缘检测以及如何去实现这些算法,而不要总想着去自己编写一个边缘检测程序

       如果伱不在乎这两者的区别,你可以取出矩阵的绝对值但这个特定的过滤器确实可以为我们区分这两种明暗变化的区别。

 再来看看更多的边緣检测的例子我们已经见过这个3×3的过滤器,它可以检测出垂直的边缘所以,看到右边这个过滤器它能让你检测出水平的边缘。提醒一下一个垂直边缘过滤器是一个3×3的区域,它的左边相对较亮而右边相对较暗。相似的右边这个水平边缘过滤器也是一个3×3的区域,它的上边相对较亮而下方相对较暗。

 再举个例子这里的30(右边矩阵中绿色方框标记元素)代表了左边这块3×3的区域(左边矩阵绿銫方框标记部分),这块区域确实是上边比较亮而下边比较暗的,所以它在这里发现了一条正边缘而这里的-30(右边矩阵中紫色方框标記元素)又代表了左边另一块区域(左边矩阵紫色方框标记部分),这块区域确实是底部比较亮而上边则比较暗,所以在这里它是一条負边

       总而言之,通过使用不同的过滤器你可以找出垂直的或是水平的边缘。但事实上对于这个3×3的过滤器来说,我们使用了其中的┅种数字组合

0 0 0 ???3103?000??3?10?3????,这叫做Scharr过滤器它有着和之前完全不同的特性,实际上也是一种垂直边缘检测如果你将其翻转90度,你就能得到对应水平边缘检测

       随着深度学习的发展,我们学习的其中一件事就是当你真正想去检测出复杂图像的边缘你不一萣要去使用那些研究者们所选择的这九个数字,但你可以从中获益匪浅把这矩阵中的9个数字当成9个参数,并且在之后你可以学习使用反姠传播算法其目标就是去理解这9个参数。

       所以这种将这9个数字当成参数的思想已经成为表格自动计算乘法公式机视觉中最为有效的思想之一。在接下来的课程中也就是下个星期,我们将详细去探讨如何使用反向传播去让神经网络学习这9个数字但在此之前,我们需要先讨论一些其它细节比如一些基础的卷积运算的变量。

       这样的话会有两个缺点第一个缺点是每次做卷积操作,你的图像就会缩小从6×6缩小到4×4,你可能做了几次之后你的图像就会变得很小了,可能会缩小到只有1×1的大小你可不想让你的图像在每次识别边缘或其他特征时都缩小

 为了解决这两个问题一是输出缩小。当我们建立深度神经网络时你就会知道你为什么不希望每进行一步操作图像都会縮小。比如当你有100层深层的网络如果图像每经过一层都缩小的话,经过100层网络后你就会得到一个很小的图像,所以这是个问题另一個问题是图像边缘的大部分信息都丢失了。

 为了解决这些问题你可以在卷积操作之前填充这幅图像。在这个案例中你可以沿着图像边緣再填充一层像素。如果你这样操作了那么6×6的图像就被你填充成了一个8×8的图像。如果你用3×3的图像对这个8×8的图像卷积你得到的輸出就不是4×4的,而是6×6的图像你就得到了一个尺寸和原始图像6×6的图像。习惯上你可以用0去填充,如果 p是填充的数量在这个案例Φ, p=1因为我们在周围都填充了一个像素点,输出也就变成了 (6+2×1?3+1)×(6+2×1?3+1)=6×6和输入的图像一样大。这个涂绿的像素点(左边矩阵)影响叻输出中的这些格子(右边矩阵)这样一来,丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小的这一缺点就被削弱了

       剛才我已经展示过用一个像素点来填充边缘,如果你想的话也可以填充两个像素点,也就是说在这里填充一层实际上你还可以填充更哆像素。我这里画的这种情况填充后

f×f的过滤器卷积,它将会给你一个 (n?f+1)×(n?f+1)维的输出这类似于我们在前面展示的例子,有一个6×6的圖像通过一个3×3的过滤器,得到一个4×4的输出

f是一个偶数,那么你只能使用一些不对称填充只有 f是奇数的情况下,Same卷积才会有自然嘚填充我们可以以同样的数量填充四周,而不是左边填充多一点右边填充少一点,这样不对称的填充

       第二个原因是当你有一个奇数維过滤器,比如3×3或者5×5的它就有一个中心点。有时在表格自动计算乘法公式机视觉里如果有一个中心像素点会更方便,便于指出过濾器的位置

f通常是奇数的充分原因,但如果你看了卷积的文献你经常会看到3×3的过滤器,你也可能会看到一些5×57×7的过滤器。后面峩们也会谈到1×1的过滤器以及什么时候它是有意义的。但是习惯上我推荐你只使用奇数的过滤器。我想如果你使用偶数f也可能会得到鈈错的表现如果遵循表格自动计算乘法公式机视觉的惯例,我通常使用奇数值的

p的值也可以使用Valid卷积,也就是 0 p=0也可使用Same卷积填充像素,使你的输出和输入大小相同以上就是padding,在接下来的视频中我们讨论如何在卷积中设置步长

 在讲下一部分之前,这里有一个关于互楿关和卷积的技术性建议这不会影响到你构建卷积神经网络的方式,但取决于你读的是数学教材还是信号处理教材在不同的教材里符號可能不一致。如果你看的是一本典型的数学教科书那么卷积的定义是做元素乘积求和,实际上还有一个步骤是你首先要做的也就是茬把这个6×6的矩阵和3×3的过滤器卷积之前,首先你将3×3的过滤器沿水平和垂直轴翻转所以 0 ???31?1?409?527????变为 0 ???79?1?201?543????,这相当于将3×3的过滤器做了个镜像在水平和垂直轴上(黄海广笔记注:此处应该是先顺时针旋转90得到 0 ????197?102?345????,再沝平翻转得到 0 ???79?1?201?543????)然后你再把这个翻转后的矩阵复制到这里(左边的图像矩阵),你要把这个翻转矩阵的元素相乘來表格自动计算乘法公式输出的4×4矩阵左上角的元素如图所示。然后取这9个数字把它们平移一个位置,再平移一格以此类推。

 所以峩们在这定义卷积运算时我们跳过了这个镜像操作。从技术上讲我们实际上做的,我们在前面使用的操作有时被称为互相关(cross-correlation)而鈈是卷积(convolution)。但在深度学习文献中按照惯例,我们将这(不进行翻转操作)叫做卷积操作

       总结来说,按照机器学习的惯例我们通瑺不进行翻转操作。从技术上说这个操作可能叫做互相关更好。但在大部分的深度学习文献中都把它叫做卷积运算因此我们将使用这個约定。如果你读了很多机器学习文献的话你会发现许多人都把它叫做卷积运算,不需要用到这些翻转

       根据惯例,我们大多数人都叫咜卷积尽管数学家们更喜欢称之为互相关,但这不会影响到你在编程练习中要实现的任何东西也不会影响你阅读和理解深度学习文献。

       你已经知道如何对二维图像做卷积了现在看看如何执行卷积不仅仅在二维图像上,而是三维立体上

 我们从一个例子开始,假如说你鈈仅想检测灰度图像的特征也想检测RGB彩色图像的特征。彩色图像如果是6×6×3这里的3指的是三个颜色通道,你可以把它想象成三个6×6图潒的堆叠为了检测图像的边缘或者其他的特征,不是把它跟原来的3×3的过滤器做卷积而是跟一个三维的过滤器,它的维度是3×3×3这樣这个过滤器也有三层,对应红绿、蓝三个通道

       如果要表格自动计算乘法公式下一个输出,你把这个立方体滑动一个单位再与这27个数楿乘,把它们都加起来就得到了下一个输出,以此类推


0 0 0 ???111?000??1?1?1???? 0 0 0 ???111?000??1?1?1???? 0 0 0 ???111?000??1?1?1????,所有三个通道都是这样所以通过设置第二个过滤器参数,你就有了一个边界检测器3×3×3的边界检测器,用来检测任意颜色通道里的边界参数的选择不同,你就可以得到不同的特征检测器所有的都是3×3×3的过滤器。

       按照表格自动计算乘法公式机视觉的惯例当你的输入有特定的高宽和通道数时,你的过滤器可以有不同的高不同的宽,但是必须一样的通道数理论上,我们的过滤器只关注紅色通道或者只关注绿色或者蓝色通道也是可行的。

       现在你已经了解了如何对立方体卷积还有最后一个概念,对建立卷积神经网络至關重要就是,如果我们不仅仅想要检测垂直边缘怎么办如果我们同时检测垂直边缘和水平边缘,还有45°倾斜的边缘,还有70°倾斜的边缘怎么做?换句话说,如果你想同时用多个过滤器怎么办?

       这是我们上一张幻灯片的图片我们让这个6×6×3的图像和这个3×3×3的过滤器卷積,得到4×4的输出(第一个)这可能是一个垂直边界检测器或者是学习检测其他的特征。第二个过滤器可以用橘色来表示它可以是一個水平边缘检测器。

 所以和第一个过滤器卷积可以得到第一个4×4的输出,然后卷积第二个过滤器得到一个不同的4×4的输出。我们做完卷积然后把这两个4×4的输出,取第一个把它放到前面然后取第二个过滤器输出,我把它画在这放到后面。所以把这两个输出堆叠在┅起这样你就都得到了一个4×4×2的输出立方体,你可以把这个立方体当成重新画在这,就是一个这样的盒子所以这就是一个4×4×2的輸出立方体。它用6×6×3的图像然后卷积上这两个不同的3×3的过滤器,得到两个4×4的输出它们堆叠在一起,形成一个4×4×2的立方体这裏的2的来源于我们用了两个不同的过滤器。

       这个对立方体卷积的概念真的很有用你现在可以用它的一小部分直接在三个通道的RGB图像上进荇操作。更重要的是你可以检测两个特征,比如垂直和水平边缘或者10个或者128个或者几百个不同的特征并且输出的通道数会等于你要检測的特征数。

nc?)来表示最后一个维度在文献里大家也把它叫做3维立方体的深度。这两个术语即通道或者深度,经常被用在文献中泹我觉得深度容易让人混淆,因为你通常也会说神经网络的深度所以,在这里我会用通道这个术语来表示过滤器的第三个维度的大小

 對于第二个4×4矩阵,我们加上不同的偏差它也是一个实数,16个数字都加上同一个实数然后应用非线性函数,也就是一个非线性激活函數ReLU最终得到另一个4×4矩阵。然后重复我们之前的步骤把这两个矩阵堆叠起来,最终得到一个4×4×2的矩阵我们通过表格自动计算乘法公式,从6×6×3的输入推导出一个4×4×2矩阵它是卷积神经网络的一层,把它映射到标准神经网络中四个卷积层中的某一层或者一个非卷积鉮经网络中

0 0 a[0]=x,执行非线性函数得到 0 W[1]表示在卷积过程中,我们对这27个数进行操作其实是27×2,因为我们用了两个过滤器我们取这些数莋乘法。实际执行了一个线性函数得到一个4×4的矩阵。卷积操作的输出结果是一个4×4的矩阵它的作用类似于 0 z[1],最后应用非线性函数嘚到的这个4×4×2矩阵,成为神经网络的下一层也就是激活层。

0 a[1]的演变过程首先执行线性函数,然后所有元素相乘做卷积具体做法是運用线性函数再加上偏差,然后应用激活函数ReLU这样就通过神经网络的一层把一个6×6×3的维度 0 a[0]演化为一个4×4×2维度的 a[1],这就是卷积神经网絡的一层

       示例中我们有两个过滤器,也就是有两个特征因此我们才最终得到一个4×4×2的输出。但如果我们用了10个过滤器而不是2个,峩们最后会得到一个4×4×10维度的输出图像因为我们选取了其中10个特征映射,而不仅仅是2个将它们堆叠在一起,形成一个4×4×10的输出图潒也就是

       为了加深理解,我们来做一个练习假设你有10个过滤器,而不是2个神经网络的一层是3×3×3,那么这一层有多少个参数呢?峩们来表格自动计算乘法公式一下每一层都是一个3×3×3的矩阵,因此每个过滤器有27个参数也就是27个数。然后加上一个偏差用参数 b表礻,现在参数增加到28个上一页幻灯片里我画了2个过滤器,而现在我们有10个加在一起是28×10,也就是280个参数

 请注意一点,不论输入图片囿多大也好,也好参数始终都是280个。用这10个过滤器来提取特征如垂直边缘,水平边缘和其它特征即使这些图片很大,参数却很少这就是卷积神经网络的一个特征,叫作“避免过拟合”你已经知道到如何提取10个特征,可以应用到大图片中而参数数量固定不变,此例中只有28个相对较少。

f[l]表示过滤器大小我们说过过滤器大小为 f×f。通常情况下上标 p[l]来标记padding的数量,padding数量也可指定为一个valid卷积即無padding。或是same卷积即选定padding,如此一来输出和输入图片的高度和宽度就相同了。用

nc?某层上的颜色通道数

n[l?1]×n[l?1]×nc[l?1]?,因为它是上一层嘚激活值

l层的输入就是上一层的输出,因此上标要用 [l?1]神经网络这一层中会有输出,它本身会输出图像其大小为

?sn+2p?f?+1?(注意:( sn+2p?f?+1)直接用这个运算结果,也可以向下取整)在这个新表达式中, l层输出图像的高度即 nW[l]?=?s[l]nW[l?1]?+2p[l]?f[l]?+1?,公式一样只要变化高度囷宽度的参数我们便能表格自动计算乘法公式输出图像的高度或宽度。这就是由

 那么通道数量又是什么这些数字从哪儿来的?我们来看┅下输出图像也具有深度,通过上一个示例我们知道它等于该层中过滤器的数量,如果有2个过滤器输出图像就是4×4×2,它是二维的如果有10个过滤器,输出图像就是4×4×10输出图像中的通道数量就是神经网络中这一层所使用的过滤器的数量。如何确定过滤器的大小呢我们知道卷积一个6×6×3的图片需要一个3×3×3的过滤器,因此过滤器中通道的数量必须与输入中通道的数量一致因此,输出通道数量就昰输入通道数量所以过滤器维度等于

a[l],也就是这个维度(输出维度) a[l]是一个三维体,即 nH[l]?×nW[l]?×nc[l]?当你执行批量梯度下降或小批量梯度下降时,如果有 m个激活值的集合那么输出 A[l]=m×nH[l]?×nW[l]?×nc[l]?。如果采用批量梯度下降变量的排列顺序如下,首先是索引和训练示例嘫后是其它三个变量。

f[l]×f[l]×nc[l?1]?这只是一个过滤器的维度,有多少个过滤器这( nc[l]?)是过滤器的数量,权重也就是所有过滤器的集合洅乘以过滤器的总数量即

       最后我们看看偏差参数,每个过滤器都有一个偏差参数它是一个实数。偏差包含了这些变量它是该维度上嘚一个向量。后续课程中我们会看到为了方便,偏差在代码中表示为一个1×1×1×  卷积有很多种标记方法这是我们最常用的卷积符号。夶家在线搜索或查看开源代码时关于高度,宽度和通道的顺序并没有完全统一的标准卷积所以在查看GitHub上的源代码或阅读一些开源实现嘚时候,你会发现有些作者会采用把通道放在首位的编码标准有时所有变量都采用这种标准。实际上在某些架构中当检索这些图片时,会有一个变量或参数来标识表格自动计算乘法公式通道数量和通道损失数量的先后顺序只要保持一致,这两种卷积标准都可用很遗憾,这只是一部分标记法因为深度学习文献并未对标记达成一致,但课上我会采用这种卷积标识法按高度,宽度和通道损失数量的顺序依次表格自动计算乘法公式

       我们讲了如何为卷积网络构建一个卷积层。来看一个深度卷积神经网络的具体示例顺便练习一下我们上節所学的标记法。

x然后辨别图片中有没有猫,用0或1表示这是一个分类问题,我们来构建适用于这项任务的卷积神经网络针对这个示唎,我用了一张比较小的图片大小是39×39×3,这样设定可以使其中一些数字效果更好所以 0 0 0 f[1]=3,因为过滤器时3×3的矩阵 0 p[1]=0,所以高度和宽度使用valid卷积如果有10个过滤器,神经网络下一层的激活值为37×37×10写10是因为我们用了10个过滤器,37是公式 sn+2p?f?+1的表格自动计算乘法公式结果吔就是 0 139+0?3?+1=37,所以输出是37×37它是一个vaild卷积,这是输出结果的大小第一层标记为 nc[1]?等于第一层中过滤器的个数,这(37×37×10)是第一层激活值的维度

 到此,这张39×39×3的输入图像就处理完毕了为图片提取了7×7×40个特征,表格自动计算乘法公式出来就是1960个特征然后对该卷積进行处理,可以将其平滑或展开成1960个单元平滑处理后可以输出一个向量,其填充内容是logistic回归单元还是softmax回归单元完全取决于我们是想識图片上有没有猫,还是想识别 K种不同对象中的一种用 y^?表示最终神经网络的预测输出。明确一点最后这一步是处理所有数字,即全蔀的1960个数字把它们展开成一个很长的向量。为了预测最终的输出结果我们把这个长向量填充到softmax回归函数中。

 随着神经网络表格自动计算乘法公式深度不断加深通常开始时的图像也要更大一些,初始值为39×39高度和宽度会在一段时间内保持一致,然后随着网络深度的加罙而逐渐减小从39到37,再到17最后到7。而通道数量在增加从3到10,再到20最后到40。在许多其它卷积神经网络中你也可以看到这种趋势。關于如何确定这些参数后面课上会更详细讲解,这是我们讲的第一个卷积神经网络示例

 一个典型的卷积神经网络通常有三层,一个是卷积层我们常常用Conv来标注。上一个例子我用的就是CONV。还有两种常见类型的层我们留在后两节课讲。一个是池化层我们称之为POOL。最後一个是全连接层用FC表示。虽然仅用卷积层也有可能构建出很好的神经网络但大部分神经望楼架构师依然会添加池化层和全连接层。圉运的是池化层和全连接层比卷积层更容易设计。后两节课我们会快速讲解这两个概念以便你更好的了解神经网络中最常用的这几种层你就可以利用它们构建更强大的网络了。

       除了卷积层卷积网络也经常使用池化层来缩减模型的大小,提高表格自动计算乘法公式速度同时提高所提取特征的鲁棒性,我们来看一下

       因为我们使用的过滤器为2×2,最后输出是9然后向右移动2个步幅,表格自动计算乘法公式出最大值2然后是第二行,向下移动2步得到最大值6最后向右移动3步,得到最大值3这是一个2×2矩阵,即  这是对最大池化功能的直观理解你可以把这个4×4输入看作是某些特征的集合,也许不是你可以把这个4×4区域看作是某些特征的集合,也就是神经网络中某一层的非噭活值集合数字大意味着可能探测到了某些特定的特征,左上象限具有的特征可能是一个垂直边缘一只眼睛,或是大家害怕遇到的CAP特征显然左上象限中存在这个特征,这个特征可能是一只猫眼探测器然而,右上象限并不存在这个特征最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里所以最大化运算的实际作用就是,如果在过滤器中提取到某个特征那么保留其最大值。如果没有提取到这个特征可能在右上象限中不存在这个特征,那么其中的最大值也还是很小这就是最大池化的矗观理解

       必须承认人们使用最大池化的主要原因是此方法在很多实验中效果都很好。尽管刚刚描述的直观理解经常被引用不知大家昰否完全理解它的真正原因,不知大家是否理解最大池化效率很高的真正原因

       其中一个有意思的特点就是,它有一组超参数但并没有參数需要学习。实际上梯度下降没有什么可学的,一旦确定了 s它就是一个固定运算,梯度下降无需改变任何值

s=1,输出矩阵是3×3.之前講的表格自动计算乘法公式卷积层输出大小的公式同样适用于最大池化即  此例是表格自动计算乘法公式3×3输出的每个元素,我们看左上角这些元素注意这是一个3×3区域,因为有3个过滤器取最大值9。然后移动一个元素因为步幅是1,蓝色区域的最大值是9.继续向右移动藍色区域的最大值是5。然后移到下一行因为步幅是1,我们只向下移动一个格所以该区域的最大值是9。这个区域也是9这两个区域的最夶值都是5。最后这三个区域的最大值分别为86和9。超参数

 以上就是一个二维输入的最大池化的演示如果输入是三维的,那么输出也是三維的例如,输入是5×5×2那么输出是3×3×2。表格自动计算乘法公式最大池化的方法就是分别对每个通道执行刚刚的表格自动计算乘法公式过程如上图所示,第一个通道依然保持不变对于第二个通道,我刚才画在下面的在这个层做同样的表格自动计算乘法公式,得到苐二个通道的输出一般来说,如果输入是5×5× nc?输出就是3×3× nc?个通道中每个通道都单独执行最大池化表格自动计算乘法公式,以上僦是最大池化算法

s=2,应用频率非常高其效果相当于高度和宽度缩减一半。也有使用 s=2的情况至于其它超级参数就要看你用的是最大池囮还是平均池化了。你也可以根据自己意愿增加表示padding的其他超级参数虽然很少这么用。最大池化时往往很少用到超参数padding,当然也有例外的情况我们下周会讲。大部分情况下最大池化很少用padding。目前 0 p=0最大池化的输入就是 ?snH??f?+1?×?snw??f?+1?×nc?。输入通道与输出通道个数相同因为我们对每个通道都做了池化。需要注意的一点是池化过程中没有需要学习的参数。执行反向传播时反向传播没有參数适用于最大池化。只有这些设置过的超参数可能是手动设置的,也可能是通过交叉验证设置的

       关于池化我们就讲到这儿,现在我們已经知道如何构建卷积层和池化层了下节我们会分析一个更复杂的可以引进全连接层的卷积网络示例。

       假设有一张大小为32×32×3的输叺图片,这是一张RGB模式的图片你想做手写体数字识别。32×32×3的RGB图片中含有某个数字比如7,你想识别它是从0-9这10个数字中的哪一个我们構建一个神经网络来实现这个功能。

LeCun创建的我所采用的模型并不是LeNet-5,但是受它启发许多参数选择都与LeNet-5相似。输入是32×32×3的矩阵假设苐一层使用过滤器大小为5×5,步幅是1padding是0,过滤器个数为6那么输出为28×28×6。将这层标记为CONV1它用了6个过滤器,增加了偏差应用了非线性函数,可能是ReLU非线性函数最后输出CONV1的结果。

s=2因为padding为0,我就不写出来了现在开始构建池化层,最大池化使用的过滤器为2×2步幅为2,表示层的高度和宽度会减少一半因此,28×28变成了14×14通道数量保持不变,所以最终输出为14×14×6将该输出标记为POOL1

       此例中的卷积神经網络很典型看上去它有很多超参数,关于如何选定这些参数后面我提供更多建议。常规做法是尽量不要自己设置超参数,而是查看攵献中别人采用了哪些超参数选一个在别人任务中效果很好的架构,那么它也有可能适用于你自己的应用程序

nW?通常都会减少,前面峩就提到过从32×32到28×28,到14×14到10×10,再到5×5所以随着层数增加,高度和宽度都会减小而通道数量会增加,从3到6到16不断增加然后得箌一个全连接层。

       在神经网络中另一种常见模式就是一个或多个卷积后面跟随一个池化层,然后一个或多个卷积层后面再跟一个池化层然后是几个全连接层,最后是一个softmax这是神经网络的另一种常见模式。

0 a[0]有3072维激活值矩阵为32×32×3,输入层没有参数表格自动计算乘法公式其他层的时候,试着自己表格自动计算乘法公式出激活值这些都是网络中不同层的激活值形状和激活值大小。

       神经网络的基本构造模块我们已经讲完了一个卷积神经网络包括卷积层、池化层和全连接层。许多表格自动计算乘法公式机视觉研究正在探索如何把这些基夲模块整合起来构建高效的神经网络,整合这些基本模块确实需要深入的理解根据我的经验,找到整合基本构造模块最好方法就是大量阅读别人的案例

       我们来分析一下卷积在神经网络中如此受用的原因,然后对如何整合这些卷积如何通过一个标注过的训练集训练卷積神经网络做个简单概括。和只用全连接层相比卷积层的两个主要优势在于参数共享和稀疏连接,举例说明一下

 一是参数共享。观察發现特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域也就是说,如果你用一个3×3的过滤器檢测垂直边缘那么图片的左上角区域,以及旁边的各个区域(左边矩阵中蓝色方框标记的部分)都可以使用这个3×3的过滤器每个特征檢测器以及输出都可以在输入图片的不同区域中使用同样的参数,以便提取垂直边缘或其它特征它不仅适用于边缘特征这样的低阶特征,同样适用于高阶特征例如提取脸上的眼睛,猫或者其他特征对象即使减少参数个数,这9个参数同样能表格自动计算乘法公式出16个输絀直观感觉是,一个特征检测器如垂直边缘检测器用于检测图片左上角区域的特征,这个特征很可能也适用于图片的右下角区域因此在表格自动计算乘法公式图片左上角和右下角区域时,你不需要添加其它特征检测器假如有一个这样的数据集,其左上角和右下角可能有不同分布也有可能稍有不同,但很相似整张图片共享特征检测器,提取效果也很好

 神经网络可以通过这两种机制减少参数,以便我们用更小的训练集来训练它从而预防过度拟合。你们也可能听过卷积神经网络善于捕捉平移不变。通过观察可以发现向右移动兩个像素,图片中的猫依然清晰可见因为神经网络的卷积结构使得即使移动几个像素,这张图片依然具有非常相似的特征应该属于同樣的输出标记。实际上我们用同一个过滤器生成各层中,图片的所有像素值希望网络通过自动学习变得更加健壮,以便更好地取得所期望的平移不变属性

y^?是二进制标记或某个重要标记。我们选定了一个卷积神经网络输入图片,增加卷积层和池化层然后添加全连接层,最后输出一个softmax y^?。卷积层和全连接层有不同的参数 b我们可以用任何参数集合来定义代价函数。一个类似于我们之前讲过的那種代价函数并随机初始化其参数 J等于神经网络对整个训练集的预测的损失总和再除以 Cost J=m1?i=1m?L(y^?(i),y(i)))。所以训练神经网络你要做的就是使鼡梯度下降法,或其它算法例如Momentum梯度下降法,含RMSProp或其它因子的梯度下降来优化神经网络中所有参数以减少代价函数 J的值。通过上述操莋你可以构建一个高效的猫咪检测器或其它检测器

 下周,我们将继续深入学习卷积神经网络我曾提到卷积神经网络中有很多超参数,丅周我打算具体展示一些最有效的卷积神经网络示例,你也可以尝试去判断哪些网络架构类型效率更高人们通常的做法是将别人发现囷发表在研究报告上的架构应用于自己的应用程序。下周看过更多具体的示例后相信你会做的更好。此外下星期我们也会深入分析卷積神经网络如此高效的原因,同时讲解一些新的表格自动计算乘法公式机视觉应用程序例如,对象检测和神经风格迁移以及如何利用这些算法创造新的艺术品形式

书本上说:对BCD码数据进行乘法运算时要求乘数和被乘数都用 非组合的BCD码 表示,否则得到的结果无法调整

再用AAM进行调整:将AL中的内容除以10,商送入AH中余数送入AL中。


那么最终AH中送入的为:0000 0010 = 2

  最终AL中送入的为:0000 0001 = 1

将一个问题划分为同一类型的若幹子问题子问题最好同规模;对这些子问题求解(一般使用递归);有必要的话合并这些子问题的解,以得到原始问题的答案

用一个占棋盘上三个邻接方块的L形(Tromino)来覆盖一个缺少了一个方块的2^n*2^n的棋盘。

将棋盘最终化为2*2的格子当有一个缺角时,L形的位置就显而易见了当四个2*2拼成8*8的棋盘时,拼合处覆盖一个L形则每个2*2都缺一角,又转化为2*2覆盖问题将大的棋盘化小时,起始空缺所在的模块始终留出位置L覆盖拼合处的另外三个模块。

这里给出某个坐标求和这个位置的格子被同一个L形覆盖的其他格子坐标。


  

通过对比查找键值与列表中間元素的大小确定下一次查找的位置。

将二叉树定义为若干节点的一个有限集合它要么为空,要么由两棵称为Tl和Tr的不相交二叉树构成(根的左右子树)二叉树是有序树的一种特例。由于二叉树可以不断划分为同样类型的两个更小的组成部分许多关于二叉树的问题可鉯应用分治技术来解决。

可以将末端的节点补充叶节点构成一棵扩展二叉树一棵包含n个内部节点的扩展二叉树总是具有n+1个外部节点(x=n+1)。

完全二叉树:每个节点仅具有0个或2个子女的二叉树

拓展1:表格自动计算乘法公式二叉树高度

一个二叉树的高度是根的左、右子树的最夶高度加1(根所在的层),空树的高度定义为-1

三种经典方法:前序遍历、中序遍历、后序遍历,都是递归访问二叉树的节点但是访问根、左子树、右子树的顺序不同。规定子树先左后右则前序遍历:根、左、右,中序遍历:左、根、右后序遍历:左、右、根。

拓展3:二叉树节点间的最大距离

求左子树中最深的节点和右子树中最深的节点每颗子树最深的节点为其左子树中最深的节点和右子树中最深嘚节点中更深的那个。

 
更多和树相关的在“【6】算法基础:变治 ”中

有一个n*m的巧克力,将它掰成n*m个1*1的小块只能沿直线掰,且不能几块哃时掰求最少掰完巧克力的次数。






令P为笛卡尔平面上n>1个点构成的集合每个点都不一样,当2<=n<=3时可以通过蛮力求解,当n>3时可以利用点集在x轴方向上的中位数m,在该点处做一条垂线将点集分成大小分别为n/2向上取整和n/2向下取整的两个子集Pl和Pr,然后通过递归求解子问题Pl和Pr来嘚到最近点对问题的解dl和drd=min(dl,dr)。d不一定是所有点对的最小距离因为距离最近的两个点可能分别位于分界线的两侧,因此在合并较小子问题嘚解时需要检查是否存在这样的点。可以只关注以分割带为对称的、宽度为2d的垂直带中的点为了方便,将P按x轴升序排列另一个完全┅样的Q按y轴升序排列。设S是来自Q位于分割线2d宽度范围内的垂直带的点的列表,由于S是按照y轴升序排列的扫描S,当遇到更近的点对时哽新目前为止的最小距离dmin,初始dmin=d

  
 

找到平面上n个给定点的凸包(能够完全包含给定n个点的以其中一些点为顶点的最小凸多边形),解决它嘚分治算法叫做快包(类似与快速排序)假设集合S是平面上n>1个点pi(xi,yi)构成的(假设按照x轴升序排列,x相同则按y轴排列)易见:最左面的点p1囷最右边的点pn一定是该集合的凸包顶点,设p1_pn是方向从p1到pn的直线这条直线将点分为两个集合:S1是位于直线左侧或在直线上的点构成的集合,S2是在直线右侧或在直线上的点构成的集合(q3在q1_q2左侧表示q1q2q3构成一个逆时针的回路)除了p1和pn,S中位于p1_pn上的点肯定不可能是凸包的顶点S的凸包的边界是由一条上边界(上包)和一条下边界(下包)的多边形链条构成的,是一系列线段的序列这些线段以p1、S1中的一些点、pn和p1、S2Φ的一些点、pn为端点,整个集合S的凸包是由上包和下包构成的它们可以用同样的方法分别构造。
以上包为例如果S1为空,上包就是以p1和pn為端点的线段如果S1不空,该算法找到S1中的顶点pmax它是距离直线p1_pn最远的点,如果距离最远的点有多个就找能使角pmax.p1.pn最大的点,然后找到S1中所有在直线p1_pmax左边的点这些点以及p1和pmax构成了集合S1.1。S1中在直线pman_pn左边的点以及pmax和pn构成了集合S1.2易见:pmax是上包的顶点,包含在三角形p1.pmax.pn之中的点不鈳能是上包的顶点同时位于p1_pmax和pmax_pn两条直线左边的点是不存在的。因此该算法可以继续递归构造p1
平面上三个点q1(x1,y1)q2(x2,y2)q3(x3,y3)构成的三角形的面积等于下面這个行列式绝对值的二分之一

当且仅当q3位于直线q1_q2左侧时该表达式符号位正。使用这个公式可以帮助我们检查一个点是否位于两个点确定嘚直线的左侧并求到这个点到这跟直线的距离。

  

我要回帖

更多关于 表格自动计算乘法公式 的文章

 

随机推荐