精华内容
下载资源
问答
  • 常见的inline元素、block元素、inline-block元素有哪些?它们之间有什么区别?】 大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真...

    这里是修真院web小课堂,每篇分享文从

    【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

    八个方面深度解web知识/技能,本篇分享的是:

    【 常见的inline元素、block元素、inline-block元素有哪些?它们之间有什么区别?】

    大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师(职业)css任务1,深度思考中的知识点——常见的inline元素、block元素、inline-block元素有哪些?它们之间有什么区别?


     

    一.背景介绍

    历史

    这三个元素到底是怎么产生的。

    line和block可能是类似于1+1=2的基础概念,还记得在没有网络的时代,有一种叫做剪报的东西,它是把从报刊杂志等上面剪下的文字、图片资料,整理分类并集纳成册。我们可以把剪下来的纸块看成是block元素,而用笔记录的文字、图画,看成是line元素。最早在做浏览器的时候加入这两个元素,可能是遵循同样的模式。

    inline-block,根据搜寻的资料发现,在IE5.5版就开始支持inline-block值,也就是1999年12月(最终版为2007年7月)。css2更新发布在1998年5月,2.1的更新草案则是在2002年8月2日发布的(css2.1版添加了display的inline-block值)。当年可能是为更好的进行元素布局,才在标准里给display添加inline-block值,使得我们有一个很方便的元素特性可供使用。至于W3C和IE之间发生过什么友好协商我们就不得而知了。(参考1)

    目的

    理解这几个元素是学习web需要理解的核心概念之一

    每个html标签元素都有其默认的元素类型,主要包括两大类:inline内联元素、block块元素。除默认为以上两种,还有部分标签元素叫可变元素,会根据上下文语境决定该元素为inline元素或是block元素。在css里,有一个display的属性,他规定元素应该生成的框的类型。可能的值有很多,我们比较常用的有table-cell,inline-block等,也包括我们这次小课堂要讲的inline、block、inline-block。其中inline-block是在css2.1里新增的值。具有这个值的元素,我们可以把它叫做inline-block元素。

    以上元素的类型是我们学习web里需要理解的核心概念之一。对页面进行布局排版,究其根本是在普通文档流的基础上,进行各种设置,达到我们想要的效果。这三个元素特性,完全影响我们的布局排版。下面就开始认识一下它们。


     

    二.知识剖析

    1、什么是inline、block、inline-block元素?

    2、各自具有什么特点?

    3、相互之间有什么区别?

    1、什么是inline、block、inline-block元素?

    如果只用一句话描述:inline是内联元素,block是块级元素,inline-block是内联块元素。

    inline元素全称Inline Elements,英文原意:An inline element does not start on a new line and only takes up as much width as necessary.一个内联元素不会开始新的一行,并且只占有必要的宽度。

    常见的块元素有div、p、h1...h6、ol、ul、dl、table、address、blockquote、form。

    block元素全称Block-level Elements,英文原意:A block-level element always starts on a new line and takes up the full width available (stretches out to the left and right as far as it can).一个块级元素总是开始新的一行,并且占据可获得的全部宽度(左右都会尽可能的延伸到它能延伸的最远)

    常见的块元素有div、p、h1...h6、ol、ul、dl、table、address、blockquote 、form。

    inline-block元素,英文释义:inline-block elements are like inline elements but they can have a width and a height.它像内联元素,但具有宽度和高度。

    img、input标签就是这种内联块元素标签

    2、各自具有什么特点?

    inline元素:

    (1)、和其他元素都在一行上;

    (2)、元素的高度、宽度、行高及顶部和底部边距不可设置;

    (3)、元素的宽度就是它包含的文字或图片的宽度,不可改变。


     

     

     

    【更多内容,欢迎加入交流群565763832与大家一起讨论交流】

    展开全文
  • 1.背景介绍 2.知识解析 3.常见问题 4.... 5.... 6.... 7.... line和block可能是类似于1+1=2的基础概念,还记得在没有网络的时代,有一种叫做剪报的东西,它是把从报刊杂志等上面剪下的文字、图片资料,...
      1.背景介绍
         2.知识解析
         3.常见问题
         4.解决方案
         5.编码实战
         6.扩展思考
         7.参考文献
    
        1.背景介绍
    
         历史 
         这三个元素到底是怎么产生的。
         line和block可能是类似于1+1=2的基础概念,还记得在没有网络的时代,有一种叫做剪报的东西,它是把从报刊杂志等上面剪下的文字、图片资料,整理分类并集纳成册。我们可以把剪下来的纸块看成是block元素,而用笔记录的文字、图画,看成是line元素。最早在做浏览器的时候加入这两个元素,可能是遵循同样的模式。
         inline-block,根据搜寻的资料发现,在IE5.5版就开始支持inline-block值,也就是1999年12月(最终版为2007年7月)。css2更新发布在1998年5月,2.1的更新草案则是在2002年8月2日发布的(css2.1版添加了display的inline-block值)。当年可能是为更好的进行元素布局,才在标准里给display添加inline-block值,使得我们有一个很方便的元素特性可供使用。
         至于W3C和IE之间发生过什么友好协商我们就不得而知了。
         目的
         理解这几个元素是学习web需要理解的核心概念之一
         每个html标签元素都有其默认的元素类型,主要包括两大类:inline内联元素、block块元素。除默认为以上两种,还有部分标签元素叫可变元素,会根据上下文语境决定该元素为inline元素或是block元素。在css里,有一个display的属性,他规定元素应该生成的框的类型。可能的值有很多,我们比较常用的有table-cell,inline-block等,也包括我们这次小课堂要讲的inline、block、inline-block。
         其中inline-block是在css2.1里新增的值。具有这个值的元素,我们可以把它叫做inline-block元素。
         以上元素的类型是我们学习web里需要理解的核心概念之一。
             对页面进行布局排版,究其根本是在普通文档流的基 础上,进行各种设置,达到我们想要的效果。
             这三个元素特性,完全影响我们的布局排版。下面就开始认识一下它们。
         2.知识解析
    知识点1:常见的inline、inline-block、block元素
           常见元素:
         inline:a,span,br,i,em,strong,label,q,var,cite,code
         inline-block:img,input
         block:p,div,p,h1...h6,ol,ul,dl,table,address,blockquote,form
     inline特点:
         (1)和其他元素都在一行上,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
         (2)元素的高度、宽度及顶部和底部边距不可设置
          (3)元素的宽度就是它包含的文字或图片的宽度,不可改变。
     block特点:
             (1)每个块级元素都从新的一行开始,并且其后的元素也另起一行。
         
             (2)元素的高度、宽度、行高以及顶和底边距都可设置。
         
             (3)元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
         inline-block特点:
     内联块状元素(inline-block)就是同时具备内联元素、块状元素的特点,
         代码display:inline-block就是将元素设置为内联块状元素。
         和其他元素都在一行上;元素的高度、宽度、行高以及顶和底边距都可设置。
    
        3.常见问题
       问题一:inline和inline-block元素之间的间距问题
       问题二:inline-block元素的如何垂直居中
       问题三:利用浏览器来查看元素的类型
         4.解决方案
         问题1:inline和inline-block元素之间的间距问题
         去除inline-block元素间间距的N种方法
         问题2:inline-block元素的如何垂直居中
         方法1:设置上下padding值相等;
         方法2:设置vertical-align:middle;
         方法3:设置line-height大于font-size即可实现单行文本垂直居中,无需设置line-height和height值相等
        问题3:利用浏览器来查看元素的类型
         打开谷歌浏览器,F12,选中“Element”项,然后选中一个元素,在“Computed”的display中即可看到元素的类型,
         查看到底是inline元素还是block 元素,亦或是其它类型的元素。
         5.编码实战
    
    

    问题;

    1.想要一个块级元素,是设置div好,还是设置span加display

    答;这个可以根据自己的需求去写,也可以用div标准的block

    2.inline-block布局较float布局而言,有哪些优势呢?

    float布局:每个列表元素的高度必须要一致,否则就会像是俄罗斯方块一样,“锯齿相错”,例如一个左浮动列表布局,如果第一行有个列表高度高于其他列表,那就在第二行,第一个元素会沿着最高元素的右侧对齐,此原因是属于恶魔系的float属性破坏了inline box。

    display:inline-block最大的不同就是其没有父元素的匿名包裹特性,这使得display:inline-block属性的使用非常自由,可与文字,图片混排,可内嵌block属性元素。黑白通吃,左右逢源。inline-block属性的元素适用于inline box模型,所以,当其中的列表元素高度不一时,是不会有错位的。

    3.

    (1)块级元素的默认长度?                                                                                                     答:默认长度是它父元素的长度。


    展开全文
  • 计算机网络的基础元素信源(发送方)消息源可以是需要将消息发送到其他人、设备的人,也可以是电子设备。信宿(接收方)信宿接收消息并解释它。信道 信道是由提供通路的介质组成,信息可以通过这些通路从信源被传输...
    计算机网络的基础元素
    信源(发送方消息源可以是需要将消息发送到其他人、设备的人,也可以是电子设备。
    信宿(接收方信宿接收消息并解释它。
    信道 信道是由提供通路的介质组成,信息可以通过这些通路从信源被传输到信宿。
    网络的最佳定义通过一些常见的通信信道互连的设备

    展开全文
  • 常见的五种神经网络(2)-卷积神经网络

    千次阅读 多人点赞 2019-09-04 07:52:18
    文章目录卷积的概念一维卷积二维卷积互相关常见的卷积核及特征常见的卷积核卷积核的特征卷积的变种卷积的数学性质交换性导数卷积神经网络用卷积代替全连接卷积层汇聚层全连接层典型的卷积网络结构参数学习误差项的...

    在这里插入图片描述


    该系列的其他文章:


    卷积神经网络(Convolutional Neural Network)是一种具有局部连接,权重共享等特性的深层前馈神经网络。一般是由卷积层,汇聚层,全连接层交叉堆叠而成,使用反向传播算法进行训练。其有三个结构上的特征:局部连接,权重共享以及汇聚。这些特征使得卷积神经网络具有一定程度上的平移,缩放和旋转不变性。较前馈神经网络而言,其参数更少。

    卷积神经网络目前主要应用在图像和视频分析的各种任务上,比如图像分类,人脸识别,物体识别,图像分割等,其准确率也远远超过了其他的人工神经网络。近年来,卷积神经网络也应用到自然语言处理和推荐系统等领域。

    卷积的概念

    卷积(Convolution)也叫摺积,是分析数学中一种重要的运算。在信号处理或者图像处理中,会经常使用一维或二维卷积。

    一维卷积

    一维卷积经常用在信号处理上,用来计算信号的累积。假设一个信号发生器每个时刻t发生一个信号 xtx_t,其信号衰减率维wkw_k,即在k1k-1时刻后,信息变为原来的wkw_k倍,假设w1=1,w2=1/2,w3=1/4w_1 = 1, w_2=1/2,w_3=1/4那么在t时刻收到的信号yty_t为当前时刻产生的信息之前时刻产生的延迟信息的叠加(公式1.1)。
    yt=1xt+1/2xt1+1/4xt2=w1xt+w2xt1+w3xt2=k=13wkxtk+1 y_t = 1 * x_t + 1/2 * x_{t-1} + 1/4 * x_{t-2} \\ =w_1 * x_t + w_2 * x_{t-1} + w_3 * x{t-2} \\ = \sum_{k=1}^{3} w_k * x_{t-k+1}
    我们把w1,w2,....w_1, w_2, ....称为滤波器(Filter)或者卷积核(Convolution Kernel)。假设滤波器长度为m,它和一个信号序列x1,x2,...x_1,x_2,...的卷积为(公式1.2):
    k=1mwkxtk+1\sum_{k=1}^{m} w_k * x_{t-k+1}
    信号序列x和滤波器w的卷积定义为(公式1.3):
    y=wxy = w \otimes x
    一维卷积示例如下:
    一维卷积神经网络

    二维卷积

    卷积也常用在图像处理中,因为图像是一个二维结构,需要对一维卷积进行扩展。给定一个图像XRMNX \in R^{M*N}和滤波器WRmnW \in R^{m*n},一般m<<M,n<<Nm << M, n <<N,其卷积为(公式1.4):
    yij=u=1Mv=1Nwuvxiu+1,jv+1 y_{ij}=\sum_{u=1}^{M}\sum_{v=1}^{N} w_{uv} * x_{i-u+1,j-v+1}
    二维卷积示例如下:
    二维卷积示例

    注意:上图中的展示的卷积核(3*3矩阵)和二维结构数据相乘时需要逆时针旋转180度!对照着卷积公式可以理解。

    互相关

    在计算卷积过程中,需要进行卷积核翻转,在具体实现上一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或者开销。互相关是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。给定一个图像XRMNX \in R^{M*N}和卷积核WRmnW \in R^{m*n},他们的互相关为(公式1.5):
    yij=u=1Mv=1Nwuvxi+u1,j+v1 y_{ij}=\sum_{u=1}^{M}\sum_{v=1}^{N} w_{uv} * x_{i+u-1,j+v-1}
    和公式1.4相比,互相关和卷积的区别在于是否对卷积核进行翻转,因此互相关也称为不翻转卷积。

    在神经网络中使用卷积是为了进行特征抽取,卷积核是否进行核翻转与其特征抽取能力无关。特别是当卷积核是可学习的参数时,卷积和互相关是等价的,因此为了实现方便,通常使用互相关来代替卷积。事实上很多深度学习工具中卷积操作都是用互相关来代替的。

    公式1.5可以表示为:

    Y=WX Y = W \otimes X


    常见的卷积核及特征

    常见的卷积核

    1. 对图像无任何影响的卷积核
      [000010000] \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix}
    2. 对图像进行锐化的滤波器
      [111191111] \begin{bmatrix} -1 & -1 & -1 \\ -1 & 9 & -1 \\ -1 & -1 & -1 \end{bmatrix}
    3. 浮雕滤波器
      [110101011] \begin{bmatrix} -1 & -1 & 0 \\ -1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix}
    4. 均值模糊滤波器
      [00.200.20.20.200.20] \begin{bmatrix} 0 & 0.2 & 0 \\ 0.2 & 0.2 & 0.2 \\ 0 & 0.2 & 0 \end{bmatrix}

    均值模糊是对像素点周围的像素进行均值化处理,将上下左右及当前像素点分文5份,然后进行平均,每份占0.2,即对当前像素点周围的点进行均值化处理。

    1. 高斯模糊滤波器

    均值模糊是一种简单的模糊处理方式,但是会现实模糊不够平滑,而高斯模糊可以很好的处理,因此高斯模糊经常用于图像的降噪处理上,尤其是在边缘检测之前,进行高斯模糊,可以移除细节带来的影响。

    • 一维高斯模糊
      G(x)=12πσ2e(x22σ2) G(x)=\frac{1}{ \sqrt{2 \pi \sigma ^2}} e^{( -\frac{x^2}{2\sigma ^2} )}
    • 二维高斯模糊
      G(x)=12πσ2e(x2+y22σ2) G(x)=\frac{1}{ \sqrt{2 \pi \sigma ^2}} e^{( -\frac{x^2+y^2}{2\sigma ^2} )}

    卷积核的特征

    这里的滤波器就是卷积核

    • 当滤波器矩阵中的值相加为0甚至更小时,被滤波器处理之后的图像相对会比原始图像暗,值越小越暗
    • 当滤波器矩阵中的值相加和为1时,被滤波器处理之后的图像与原始图像的亮度相比几乎一致
    • 当滤波器矩阵中的值相加和大于1时,被滤波器处理之后的图像相对会比原始图像的亮度更亮

    卷积的变种

    在卷积的标准定义基础上,还可以引入滤波器的滑动步长和零填充来增加卷积的多样性,可以更加灵活的提取特征。

    • 滤波器的步长(Stride)是指滤波器在滑动时的时间间隔
    • 零填充(Zero Padding)是在输入向量两端进行补零

    下图展示为步长为2和零填充的示例:
    步长为2和零填充示例

    假设卷积层的输入神经元个数为n,卷积大小为m,步长为s,输入神经元两端各补p各零,那么该卷积对应的神经元数量为:(n+2p-m)/s + 1。

    一般的卷积分为以下三种:

    • 窄卷积(Narrow Convolution):步长s=1,两端不补零即p=0,卷积后输出长度为:n-m + 1
    • 宽卷积(Wide Convolution):步长s=1,两端补零p=m-1,卷积后输出长度为:n+m-1
    • 等宽卷积(Equal-Width Convolution):步长s = 1,两端补零p = (m −1)/2,卷积后输出长度 n。

    卷积的数学性质

    卷积有很多比较好的数学性质,这里主要介绍一些二维的数学性质,同样针对一维卷积也同样适用。

    交换性

    如果不限制两个卷积的长度,卷积是具有交换性的。即 xy=yxx \otimes y = y \otimes x,当输入信息和卷积核有固定长度时,他们的宽卷积依然具有交换性。对于两维图像XRMNX \in R^{M*N}和卷积核WRmnW \in R^{m*n},对图像X的两个维度进行零填充,两端各补m-1和n-1个零,得到全填充(Full Padding)的图像X~R(M+2m2)(N+2n2)\tilde{X} \in R^{(M+2m-2)(N+2n-2)}。图像X和卷积核W的宽卷积(Wide Convolution)定义为:W~XX~WW \tilde{\otimes } X \triangleq X \tilde{\otimes } W
    ,其中~\tilde{\otimes }为宽卷积操作。宽卷积具有交换性,即:W~X=X~WW \tilde{\otimes } X = X \tilde{\otimes } W

    导数

    假设Y=WXY = W \otimes X,其中XRMNX \in R^{M*N}WRmnW \in R^{m*n}YR(Mm+1)(Nn+1)Y \in R^{(M-m+1)*(N-n+1)},函数f(Y)Rf(Y) \in R为一个标量函数,则(公式1.6)
    f(Y)wuv=i=1Mm+1j=1Nn+1f(Y)yijyijwuv=i=1Mm+1j=1Nn+1f(Y)yijxi+u1,j+v1=i=1Mm+1j=1Nn+1f(Y)yijxu+i1,v+j1 \frac{\partial f(Y)}{\partial w_{uv}} = \sum_{i=1}^{M-m+1}\sum_{j=1}^{N-n+1} \frac{\partial f(Y)}{\partial y_{ij}} \frac{\partial y_{ij}}{\partial w_{uv}} \\ = \sum_{i=1}^{M-m+1}\sum_{j=1}^{N-n+1} \frac{\partial f(Y)}{\partial y_{ij}}x_{{i+u-1},{j+v-1}} \\ = \sum_{i=1}^{M-m+1}\sum_{j=1}^{N-n+1} \frac{\partial f(Y)}{\partial y_{ij}}x_{{u+i-1},{v+j-1}}
    从公式1.6可以看出,f(Y)关于W的偏导数为X和f(Y)Y\frac{\partial f(Y)}{\partial Y}的卷积(公式1.7)
    f(Y)W=f(Y)YX \frac{\partial f(Y)}{\partial W} = \frac{\partial f(Y)}{ \partial Y } \otimes X
    同理得到(公式1.8):
    f(Y)xst=i=1Mm+1j=1Nn+1f(Y)yijyijxst=i=1Mm+1j=1Nn+1f(Y)yijwsi+1,tj+1 \frac{\partial f(Y)}{\partial x_{st}} = \sum_{i=1}^{M-m+1}\sum_{j=1}^{N-n+1} \frac{\partial f(Y)}{\partial y_{ij}} \frac{\partial y_{ij}}{\partial x_{st}} \\ = \sum_{i=1}^{M-m+1}\sum_{j=1}^{N-n+1} \frac{\partial f(Y)}{\partial y_{ij}}w_{{s-i+1},{t-j+1}}
    其中当(si+1)<1(s-i+1) < 1,或(si+1)>m(s-i+1)>m,或(tj+1)<1(t-j+1) <1,或(tj+1)>n(t-j+1) >n,或wsi+1,tj+1=0w_{s-i+1,t-j+1}=0时,即相当于对W进行了 p=(M-m,N-n)的零填充。

    从公式1.8可以看出,f(Y)关于X的偏导数为W和f(Y)Y\frac{\partial f(Y)}{ \partial Y },公式1.8中的卷积是真正的卷积而不是互相关,为了一致性,我们用互相关的卷积,即(公式1.9):
    f(Y)X=rot180(f(Y)X)~W=rot180(W)~f(Y)X \frac{\partial f(Y)}{\partial X} = rot180(\frac{\partial f(Y)}{\partial X}) \tilde{\otimes }W=rot180(W) \tilde{\otimes }\frac{\partial f(Y)}{\partial X}
    其中rot180(.)表示旋转180度。


    卷积神经网络

    卷积神经网络一般由卷积层,汇聚层和全连接层构成。

    用卷积代替全连接

    在全连接前馈神经网络中,如果第ll层有nln^l个神经元,第l1l-1层有nl1n^{l-1}个神经元,连接边就有nlnl1n^l * n^{l-1}也就是权重参数有这么多个,当m和n都很大时,权重矩阵的参数会非常多,训练的效率会非常低。

    如果用卷积代替全连接,第ll层的净输入zlz^ll1l-1层活性值al1a^{l-1}和滤波器wlRmw^l \in R^m的卷积,即zl=wlal1+blz^l = w^l * a^{l-1} + b^l,其中滤波器wlw^l
    为可学习的权重向量,blRl1b^l \in R^{l-1}为可学习的偏置。

    根据卷积的定义,卷积层有两个很重要的性质:

    • 局部连接:在卷积层(假设是第ll层)中的每一个神经元都只和下一层(第l1l − 1层)中某个局部窗口内的神经元相连,构成一个局部连接网络。
    • 全局共享:作为参数的滤波器 wlw^l,对于第 ll层的所有的神经元都是相同的。

    卷积层

    卷积层的作用是提取一个局部区域的特征,不同大小的卷积相当于不同的特征提取器。上文介绍的卷积和神经元都是一维的,但卷积神经网络主要是针对图像处理而言的,而图像通常是二维的,为了充分利用图像的局部特征,通常将神经元组织为三维结构的神经层,其大小 M * 宽度 W * 深度 D,即D个M*N的特征映射组成。

    对于输入层的而言,特征映射就是图像本身,如果是灰色图像,则深度为1,如果为彩色图像(分别是RGB三个通道的颜色特征映射),则深度为3。

    汇聚层

    汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进行特征选择,降低特征数量,从而减少参数数量。

    卷积层虽然可以明显减少网络中的连接数量,但是特征映射中的神经元个数并未显著减少。如果后边接一个分类器的话,分类器的输入维数依然很高,很容易出现过拟合。因此有了汇聚层的产生,在卷积后边加一个汇聚层,从而降低特征维数,避免过拟合。

    假设汇聚层的输入特征映射组为XRMNDX \in R^{M * N * D},对于其中每一个映射XdX^d,将其划分为很多区域Rm,ndR^d_{m,n},1 <= m <= M’,1<= n <= N’,这些区域可以重叠,也可以不重叠。汇聚(Pooling)是指对每个区域进行下采样(Down Sampling)得到一个值,作为这个区域的概括。常见的汇聚方式有两种:

    • 最大汇聚(Maximum Pooling):一个区域内所有神经元的最大值
    • 平均汇聚(Mean Pooling):一个区域内所有神经元的平均值

    典型的汇聚层是将每个特征映射划分为2*2大小的不重叠区域,然后使用最大汇聚的方式进行下采样。汇聚层也可以看作是一个特殊的卷积层,卷积核大小为m * m,步长为s * s,卷积核为 max函数或者mean函数。过大的采样区域会急剧减少神经元的数量,会造成过多的信息损失。

    下图所示为最大汇聚示例:
    最大汇聚实例

    全连接层

    在全连接层中,将最后一层的卷积输出展开,并将当前层的每个节点与下一层的另一个节点连接起来。全连接层只是人工神经网络的另一种说法,如下图所示,全连接层中的操作与一般神经网络中的操作完全相同。

    image

    对于output layer中的的每个神经元,其表达式可以记做为(公式1.10):
    y=σ(i=1mwiTxi+b) y = \sigma (\sum_{i=1}^{m} w_i ^T x_i + b)
    如果outptu有多个神经元,最终可以通过softmax进行最终类别的判断。


    典型的卷积网络结构

    一个典型的卷积网络是有卷积层,汇聚层,全连接层交叉堆叠而成。目前常用的卷积神经网络结构如下图所示:
    卷积神经网络

    卷积块是由M个卷积层b个汇聚层(M通常在2~之间,b为0或1),一个卷积网络中可以堆叠N个连续的卷积块,然后再接着K个全连接层(N的取值空间比较大,一般是1~100或者更大,K通常为0~2)。

    目前整个网络倾向于使用更小的卷积核(比如11或者33)以及更深的结构(比如层数大于50),此外,卷积操作的灵活性越来越大,汇聚层的作用变得越来越小,因此目前流行的卷积网络中,汇聚层的比例也在逐渐降低,倾向于全连接网络。


    参数学习

    在卷积神经网络中,参数为卷积核中的权重和偏置,和全连接前馈神经网络一样,使用误差反向传播算法来进行参数学习。梯度主要通过每一层的误差项δ\delta进行反向传播,并进一步计算每一层的梯度。在卷积神经网络中主要有两种功能不同的网络层:卷积层和汇聚层。而参数为卷积核中权重和偏置,因此只需要计算卷积层中参数梯度。

    不失一般性,对第ll层卷积层,第l1l-1层的输入特征映射为X(l1)RMNDX^{(l-1)} \in R^{M*N*D},通过卷积计算得到第ll层净输入为Z(l)RMNPZ^{(l)}\in R^{M'*N'*P},第ll层的第p(1<= p <= P)个特征净输入为(公式1.11)
    Z(l,p)=d=1DW(l,p,d)X(l1,d)+b(l,p) Z^{(l,p)} = \sum_{d=1}^{D} W^{(l,p,d)} \otimes X^{(l-1,d)}+ b^{(l,p)}
    其中W(l,p,d),b(l,p)W^{(l,p,d)} ,b^{(l,p)}为卷积核以及偏置。第ll层共有P * D 个卷积和P个偏置,可以分别使用链式法则计算其梯度。

    根据公式1.7 和 1.11,损失函数关于第ll层的卷积核W(l,p,d)W^{(l,p,d)}的偏导数为为(公式1.12):
    L(Y,Y^)W(l,p,d)=L(Y,Y^)Z(l,p)X(l1,d)=δ(l,p)X(l1,d) \frac{\partial L (Y,\hat{Y})}{ \partial W^{(l,p,d)} } = \frac{\partial L (Y,\hat{Y})}{ \partial Z^{(l,p)} } \otimes X^{(l-1,d)}=\delta ^{(l,p)} \otimes X^{(l-1,d)}
    其中为(公式1.13)
    δ(l,p)=L(Y,Y^)Z(l,p) \delta ^{(l,p)} = \frac{\partial L (Y,\hat{Y})}{ \partial Z^{(l,p)} }
    为损失函数关于第ll层的第p个特征映射净输入Z(l,p)Z^{(l,p)}的偏导数。

    同理可得,损失函数关于第ll层的第p个偏置b(l,p)b^{(l,p)}的偏导数为为(公式1.14):
    L(Y,Y^)b(l,p)=i,j[δ(l,p)]i,j \frac{ \partial L (Y,\hat{Y}) }{ \partial b^{(l,p)} } = \sum_{i,j} [\delta ^{(l,p)}]_{i,j}
    卷积网络中,每层参数的梯度依赖其所在层的误差项δ(l,p)\delta ^{(l,p)}

    误差项的计算

    卷积层和汇聚层的误差项计算不同。

    卷积层

    l+1l+1层为卷积层时,假设特征映射净输入(公式1.15)
    Z(l+1,p)=d=1DW(l+1,p,d)X(l,d)+b(l+1,p) Z^{(l+1,p)} = \sum_{d=1}^{D} W^{(l+1,p,d)} \otimes X^{(l,d)} + b^{(l+1,p)}

    其中W(l+1,p,d),b(l+1,p)W^{(l+1,p,d)},b^{(l+1,p)}为第ll层的卷积核和偏置。第l+1l+1层共有 P *D 个卷积核和P个偏置。

    ll层的第 dd个特征映射的误差项δ(l,d)\delta ^{(l,d)}的具体推导过程如下(公式1.16):
    δ(l,d)L(Y,Y^)Z(l,d)=X(l,d)Z(l,d)L(Y,Y^)X(l,d)=fl(Z(l,p))p=1P(rot180(W(l+1,p,d))~L(Y,Y^)Z(+1,p))=fl(Z(l,p))p=1P(rot180(W(l+1,p,d))~δ(l+1,p)) \delta ^{(l,d)} \triangleq \frac{\partial L (Y,\hat{Y})}{ \partial Z^{(l,d)} } \\ =\frac{\partial X^{(l,d)} } { \partial Z^{(l,d)}} \cdot \frac{\partial L (Y,\hat{Y})}{ \partial X^{(l,d)} } \\ = f'_l (Z^{(l,p)}) \odot \sum_{p=1}^{P}( rot180(W^{(l+1,p,d)} ) \tilde{\otimes } \frac{\partial L(Y,\hat{Y})}{ \partial Z^{(+1,p)}}) \\ = f'_l (Z^{(l,p)}) \odot \sum_{p=1}^{P}(rot180(W^{(l+1,p,d)} ) \tilde{\otimes }\delta ^{(l+1,p)})

    其中~\tilde{\otimes}表示宽卷积。

    汇聚层

    当第l+1l+1层为汇聚层时, 因为汇聚层是下采样操作, l+1l+1层的每个神经元的误差项 δ\delta对应于第ll层的相应特征映射的一个区域。ll层的第pp个特征映射中的每个神经元都有一条边和l+1l+1层的第pp个特征映射中的一个神经元相连。

    根据链式法则,第ll层的一个特征映射的误差项δ(l,p)\delta ^{(l,p)},只需要将 l+1l+1层对应特征映射的误差项δ(l+1,p)\delta ^{(l+1,p)}进行上采样操作(和第 ll层的大小一样) ,再和 ll层特征映射的激活值偏导数逐元素相乘,就得到了 δ(l,p)\delta ^{ (l,p)}

    ll层的第pp个特征映射的误差项δ(l,p)\delta ^{(l,p)}的具体推导过程如下(公式1.17):
    δ(l,p)L(Y,Y^)Z(l,p)=X(l,p)Z(l,p)Z(l+1,p)X(l,p)L(Y,Y^)Z(l+1,p)=fl(Z(l,p))up(δ(l+1,p)) \delta ^{(l,p)} \triangleq \frac{\partial L (Y,\hat{Y})}{ \partial Z^{(l,p)} } \\ =\frac{\partial X^{(l,p)} } { \partial Z^{(l,p)}} \cdot \frac{\partial Z^{(l+1,p)} } { \partial X^{(l,p)}} \cdot \frac{\partial L (Y,\hat{Y})}{ \partial Z^{(l+1,p)} } \\ = f'_l (Z^{(l,p)}) \odot up(\delta ^{(l+1,p)})
    其中flf'_l为第l层使用的激活函数导数,up为上采样函数(upsampling),与汇聚层中使用的下采样函数刚好相反,如果下采样是最大汇聚(max pooling),误差项δ(l+1,p)\delta ^{(l+1,p)}中每个值都会传递到上一层对应区域中的最大值所对应的神经元,该区域中其他位置的神经元的误差都设为0,如果下采样是平均汇聚(mean pooling) ,误差项 δ(l+1,p)\delta ^{(l+1,p)}中每个值会被平均分配到上一层对应区域中的所有神经元上。


    几种典型的卷积神经网络

    LeNet-5

    LeNet-5 虽然提出的时间比较早(LeCun et al., 1998),但是一个非常成功的卷积神经网络模型,90年代在许多银行进行使用,用来识别手写数字,其网络结构如下:
    LeNet-5

    AlexNet

    AlexNet是第一个现代深度卷积网络模型,其首次使用了现在深度卷积网络的一些技巧,比如GPU并行训练,采用ReLU作为非线性激活函数,使用DropOut防止过拟合,使用数据增强来提高模型准确率。AlexNet获得了2012年ImageNet图像分类比赛的冠军,其网络结构如下:
    AlexNet

    Inception

    在卷积网络中,如何定义一个卷积的大小是一个十分关键的问题,在Inception网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception模块, Inception网络是由多个inception模块和汇聚层堆叠而成。

    Inception模块同时使用11,33,55等大小不同的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射。下图给出了v1版本的inception模块结构图,采用了4组平行的特征抽取方式,分别为11,33,55的卷积和33的最大汇聚,同时为了提高计算效率,减少参数数量,inception模块在进行33,55的卷积之前,33的最大汇聚之后,进行一次1*1的卷积来减少特征映射的深度。
    v1版本的inception模块

    Inception网络最早的v1版本就是非常著名的GoogleNet,获得了2014年ImageNet图像分类竞赛的冠军。其结构图如下所示:
    GoogleLeNet

    当然Inception网络有多个改进版本,比如Inception-v3网络,Inception-ResNet v2网络和改进版的Inception-v4模型。

    残差网络

    残差网络(Residual Network,ResNet)是通过给非先行的卷积层增加直连边的方式来提高信息的传播效率。

    假设在一个深度网络中,我们期望一个非线性单元f(x,θ)f(x,\theta)去逼近一个目标函数为h(x)。如果将目标函数拆分为两部分:恒等函数(Identity)和残差函数(Reside Function)h(x)-x。

    h(x)=xIdentityFunc+(h(x)xResidueFunc) h(x) = \underset{IdentityFunc}{\underbrace{x}} +( \underset{ResidueFunc}{\underbrace{h(x)-x}})

    根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易血虚。因此原来的优化问题可以转化为:让非线性单元f(x,θ)f(x,\theta)去近似残差h(x)-x,并用f(x,θ)+xf(x,\theta) +x去逼近h(x)。

    下图给出了一个典型的残差单元示例,残差单元由多个级联的(等长)卷积层和一个跨层的直连边组成,再经过ReLU激活后得到输出。残差网络就是将很多个残差单元串联起来构成的一个非常深的网络。
    残差单元示例


    其他卷积方式

    转置卷积

    我们一般通过卷积操作来实战高维特征到低维特征的转换,但在一些任务中需要把低维特征映射到高维特征,并且希望通过卷积操作来实现。

    卷积操作可以通过仿射变换的形式。假设一个5维的向量x,经过大小为3的卷积核w=[w1,w2,w2]^T来进行卷积,得到3维向量z,卷积操作可以写为:

    5维向量x与大小为3的卷积核进行卷积

    其中C是一个稀疏矩阵,其非零元素来自于卷积核w中的元素。如果实现3维向量z到5维向量x的映射,可以通过仿射矩阵转置来实现。

    仿射矩阵转置

    其中rot180(.)表示旋转180度。

    我们将低维特征映射到高维特征的卷积操作称之为转置卷积(Transposed Convolution),也叫反转卷积(Deconvolution)。

    空洞卷积

    对于一个卷积层,如果希望增加输出单元的感受野,一般可以通过三种方式实现:

    • 增加卷积核的大小
    • 增加层数
    • 在卷积之前进行汇聚操作

    前两种会增加参数数量,最后一种会丢失一些信息。

    空洞卷积(Atrous Convolution)也成为膨胀卷积(Dilated Convolution),是一种不增加参数数量,同时增加输出单元感受野的一种方法。

    空洞卷积通过给卷积核插入“空洞”来变相的增加其大小,如果在卷积核的每两个元素之间插入d-1个空洞,卷积核的有效大小维:
    m=m+(m1)(d1)m'=m+ (m-1) * (d-1)
    其中d称为膨胀率(Dilation Rate)。当d=1时卷积核维普通的卷积核。
    不同膨胀率的卷积核


    【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

    扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!

    展开全文
  • 常见的五种神经网络系列第三种,主要介绍循环神经网络,由于循环神经网络包含的内容过多,分位上中下三篇进行介绍,本文主要是循环神经网络(下)篇,主要介绍以下内容: 长短时记忆网络(LSTM) 门控循环单元网络...
  • 常见的五种神经网络系列第三种,主要介绍循环神经网络,分位上中下三篇进行介绍,本文主为(中)篇,涉及内容如下: 循环神经网络中的参数学习 RNN中的长期依赖问题 常见的循环神经网络结构 该系列的其他文章: ...
  • 常见网络错误代码

    万次阅读 2006-12-18 18:08:00
     2 系统找到指定的文件。 3 系统找到指定的路径。 4 系统无法打开文件。 5 拒绝访问。 6 句柄无效。 7 存储控制块被损坏。 8 存储空间不足,无法处理此命令。 9 存储控制块地址无效。
  • 常见的五种神经网络系列第三篇,主要介绍深度信念网络。内容分为上下两篇进行介绍,本文主要是深度信念网络(上)篇,主要介绍以下内容: 背景 玻尔兹曼机 受限玻尔兹曼机 该系列的其他文章: 常见的五种神经网络...
  • 这篇文章将讲解Powershell基础入门知识,包括常见的用法,涉及基础概念、管道和重定向、执行外部命令、别名用法、变量定义等。Powershell被广泛应用于安全领域,甚至成为每一位Web安全必须掌握的技术。
  • 卷积神经网络常见基本问题

    千次阅读 2017-02-07 20:22:34
    首先带着以下五个问题阅读: 1.每个图如何卷积:  (1)一个图如何变成几个图?...5.最后output输出什么形式? ① 各个层解释:  我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一
  • 这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了WannaCry蠕虫的传播机制,带领大家详细阅读源代码。这篇文章将分享APT攻击检测...
  • 卷积神经网络常见三层的介绍

    千次阅读 2020-02-01 17:24:16
    卷积层:输入与滤波器做元素积,再求和,即得到输出中对应的一个元素(滤波器可以翻转)。 池化层:每个通道单独池化,其中,一个通道就代表所提取到的一种特征在图片中的分布,值越大,代表这种特征在该区域就越...
  • 这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。前文分享了Powershell基础入门知识,涉及基础概念、管道和重定向、执行外部命令、别名...
  • 常见的四种特征金字塔网络结构

    万次阅读 2020-03-19 15:22:56
    什么使用特征金字塔呢,是因为CNN对物体的平移是保持不变的,而对于物体的尺度变换是无法处理的,所以使用特征金字塔进行处理,下面进行介绍。 1.Featurized image pyramid ...
  • 谷歌浏览器的用户代理字符串是什么? 语言编码 谷歌浏览器未正确显示字符 无法使用 JavaScript (document.write) 声明编码 谷歌浏览器显示的是“%B1%C1%C3%E5”,而非两个汉字 脚本与网络应用程序 ...
  • 网络爬虫存储数据的三种常见方式及其python实现

    万次阅读 多人点赞 2018-07-19 15:47:56
    在最近一段时间学习网络爬虫的过程中,一直想写点东西介绍一下网络爬虫数据存储方面的内容,今天以博客的形式对这方面的内容进行总结,介绍网络爬虫中数据存储的三种常用方式及其python实现,三种常见方式分别是:t
  • 本文作者列举了搭建神经网络时可能遇到的11个常见问题,包括预处理数据、正则化、学习率、激活函数、网络权重设置等,并提供解决方法和原因解释,是深度学习实践的有用资料。 如果你的神经网络不工作,该怎么办?...
  • Java基础常见笔试题总结

    万次阅读 多人点赞 2018-01-30 21:32:31
    以下是自己总结的一些Java常见的基础知识题,答案仅供参考,如有异议请指出。一直保持更新状态。 1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机...
  • 何大量网站能抓取?爬虫突破封禁的6种常见方法 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人...
  • 全连接神经网络需要非常多的计算资源才能支撑它来做反向传播和前向传播,所以说全连接神经网络可以存储非常多的参数,如果你给它的样本如果没有达到它的量级的时候,它可以轻轻松松把你给他的样本全部都记下来,这会...
  • 本课程笔记是基于今年斯坦福大学Feifei Li, Andrej Karpathy & Justin Johnson联合开设的Convolutional Neural Networks for Visual Recognition课程的学习笔记。...今天终于可以开始讲神经网络啦~~
  • HTML - 元素/标签详解

    千次阅读 多人点赞 2017-12-29 10:46:44
    HTML头部元素 元素包含了所有的头部标签元素。在 元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息。可以添加在头部区域的元素标签为: , , , , , , . 标签定义了不同文档的标题。 在 HTML/XHTML ...
  • 从一个问题说起吧------------div能能放在p标签里面??? 首先还是一个老概念: 块级元素---h1,h2,h3,h4,h5,h6,hr,div,fieldset,form,dl,address,ol,p,table,ul,pre等常见 内联元素---a,b,br,em,i,img,...
  • 在机器学习和认知科学领域,人工神经网络(英文:artificial neural network,缩写ANN),简称神经网络(英文:neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,550
精华内容 55,420
关键字:

常见网络元素不包括什么