卷积神经网络

深度学习三部曲

step1:搭建神经网络结构
step2:找到一个合适的损失函数
step3:找到一个合适的优化函数,更新参数

传统神经网络VS卷积神经网络

传统神经网络能用到计算机视觉上吗?为什么还需要卷积神经网络?

  1. 全连接网络处理图像的问题,参数太多。比如一个1000×1000的图片,如果使用全连接层需要10001000hidden units个参数
  2. 卷积神经网络的解决方式
    (1)局部关联:全连接是一个神经元和图片全部有关系,而卷积是和一个局部块儿(即一个kernalSize大小的块)
    (2)参数共享:对比全连接和卷积神经网络,一个1000×1000图片,全连接需要参数1000×1000hidden units,而卷积需要(kernal_w×kernal_h+1)×hidden units少了很多参数

卷积神经网络结构

卷积层

卷积操作,下图表示很清楚,两个3*3的kernal。最后output左上角的那个1=(1+ -1 +0 )+1

关于卷积操作后的特征图计算
n = ⌊ n + 2 p − f s + s ⌋ n= ⌊ \frac {n+2p-f}{s} +s ⌋ n=sn+2pf+s

池化层

作用:保留了主要特征的同时减少参数和计算量,防止过拟合,提高模型泛化能力
特点:一般位于卷积层和卷积层之间,全连接层与全连接层之间
类型:

  1. max pooling 最大值池化
  2. average pooling 平均池化
  3. Global Average Pooling 全局池化层:在yolo中见到,就是对特征图每层全部数值求平均,而不是一个kernal size内

全连接层

特点:

  1. 两层之间所有神经元都有权重链接
  2. 通常全连接层在卷积神经网络尾部
  3. 全连接层参数量通常最大
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习之卷积神经网络CNN做手写体识别的VS代码。支持linux版本和VS2012版本。 tiny-cnn: A C++11 implementation of convolutional neural networks ======== tiny-cnn is a C++11 implementation of convolutional neural networks. design principle ----- * fast, without GPU 98.8% accuracy on MNIST in 13 minutes training (@Core i7-3520M) * header only, policy-based design supported networks ----- ### layer-types * fully-connected layer * convolutional layer * average pooling layer ### activation functions * tanh * sigmoid * rectified linear * identity ### loss functions * cross-entropy * mean-squared-error ### optimization algorithm * stochastic gradient descent (with/without L2 normalization) * stochastic gradient levenberg marquardt dependencies ----- * boost C++ library * Intel TBB sample code ------ ```cpp #include "tiny_cnn.h" using namespace tiny_cnn; // specify loss-function and optimization-algorithm typedef network CNN; // tanh, 32x32 input, 5x5 window, 1-6 feature-maps convolution convolutional_layer C1(32, 32, 5, 1, 6); // tanh, 28x28 input, 6 feature-maps, 2x2 subsampling average_pooling_layer S2(28, 28, 6, 2); // fully-connected layers fully_connected_layer F3(14*14*6, 120); fully_connected_layer F4(120, 10); // connect all CNN mynet; mynet.add(&C1); mynet.add(&S2); mynet.add(&F3); mynet.add(&F4); assert(mynet.in_dim() == 32*32); assert(mynet.out_dim() == 10); ``` more sample, read main.cpp build sample program ------ ### gcc(4.6~) without tbb ./waf configure --BOOST_ROOT=your-boost-root ./waf build with tbb ./waf configure --TBB --TBB_ROOT=your-tbb-root --BOOST_ROOT=your-boost-root ./waf build with tbb and SSE/AVX ./waf configure --AVX --TBB --TBB_ROOT=your-tbb-root --BOOST_ROOT=your-boost-root ./waf build ./waf configure --SSE --TBB --TBB_ROOT=your-tbb-root --BOOST_ROOT=your-boost-root ./waf build or edit inlude/config.h to customize default behavior. ### vc(2012~) open vc/tiny_cnn.sln and build in release mode.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值