zoukankan      html  css  js  c++  java
  • Convolutional Neural Networks(1): Architecture

    Concolutional Neural Networks(CNN)同样使用三层结构,但结构上同Feedforward Neural Network有很大不同,其结构如下图:

    Input layer: 对单张图片来说,输入数据是3D的(Width*Length*Depth),见下方的立体图。但如果我们使用mini-batch去训练神经网络的话,则input变为了4D数据(Width*Length*Depth*Batch_size)。

    Feature-extraction layers:Convolution layer(+Relu)和Pooling layer成对出现,进行高阶映射和特征提取。如下图所示,对于单张图片(3D data)来说,使用Filter(也叫Kernel,可以看成是一个Sliding Window,一般尺寸比数据要小)去扫描该图片并做卷积。通常情况下,从input volumn到Convolutional Layer,数据的Width和Length有了少许的减少,而the 3rd Dimension Depth,则被扩张了,因为有多个Kernels。在中间的过程中,可以看到经过Filter以后,depth变成了6,证明有6个Filter,将原先Depth=3扩展到了6。而后通过pooling layer,Width和Length又被进一步压缩,在这里一般使用Average,或者Maximum去压缩。

    Classification layer:在最终输出层之前,会有一个Fully-connected layer,形式和Feedfoward Neural Network的Hidden layer是一样的,与前一Pooling layer的Neurons做全连接,与输出层的Output nodes也做全连接,一层或多层根据需要。

    Output layer:用Softmax输出概率或根据需要输出其他形式。如果使用了Mini batch,则输出是2D的(Probabilities*Batch_size)。

    实际工作流程,可以用下例来说明:

    a. Input是32*32的(depth=1)

    b.在Layer1中有6个kernel,Convolution之后有6个28*28的Activation Map,经过Pooling(Subsample)四选一之后,变成了6*14*14.

    c.Layer2中有16个kernel,Convolution之后有16个10*10的Activation Map,经过Pooling(Subsample)四选一之后,变成了16*5*5.

    d.C5是含有120个neurons的全连接层,F6是输出层

  • 相关阅读:
    [pyqt4]mark
    EPC摘抄
    sockaddr struct 类型重定义
    linux编译警告 will be initialized after
    cout如何输出十六进制
    strcpy unsigned char
    c语言格式控制符
    c++字节数组转换为整型
    C++如何判断大小端
    C++中关于位域的概念
  • 原文地址:https://www.cnblogs.com/rhyswang/p/8937940.html
Copyright © 2011-2022 走看看