Convolutional Neural Networks

原文引用https://www.dazhuanlan.com/2019/08/25/5d625a7694a88/

Convolutional Neural Networks

白雪峰 — [email protected]
这是一篇关于CNN的总结

Outline

  • CNN栗子镇楼
  • What is CNN
    • 什么是卷积
    • 什么是池化
  • Why CNN
  • 对CNN的其他一些理解
  • CNN实现(接口)

1. CNN栗子(A Beginning Glimpse of CNN)

(1)Modern CNN since Yann LeCun

(2)

2. What is CNN?

神经网络?卷积?

2.1 什么是卷积?

卷积的定义:

其连续的定义为:
$(fg)(n) = int_{ - infty }^{ + infty } {f(t)g(n-t)dt}$
其离散的定义为:
$(f
g)(n) = sum_{t = - infty} ^{ + infty } {f(t)g(n-t)}$

特点: 

2.2 离散卷积的栗子:

丢骰子,两个骰子加起来要等于4的概率是多少?

$(f*g)(4) = sum_{m = 1} ^{ 3 } {f(m)g(4-m)}$

a. 二维离散的卷积:

$(fg)(m,n) = sumlimits{k=0}^{2}sumlimits{h=0}^{2}f(h,k)g(m-h,n-k)$
则 (f
g)(1,1) ?

离散的卷积可以看成是矩阵的乘法(翻转的)

2.3 用到二维图像上:

a.关于卷积中常用到的一些概念:

In Image Processing
– Convolution is always named filtering, and there are many famous filters/convolution kernels that extract intuitive features in images


通过在输入数据上不断移动卷积核,来提取不同位置的特征.

b. 图像上作卷积的效果:


2.4 用到神经网络中

2.5 卷积的细节

a. filter/Kernel size, number

假设神经网络的输入是6*6的image,

那么,,,

再来个更形象的:

b. Stride

The step size you take the filter to sweep the
image

c. Zero-padding

  1. A way not to ignore pattern on border
  2. New image is smaller than the original image

d.Channel

2.6 池化(Pooling)

Pooling layers subsample their input

1. Spatial pooling (also called subsampling or

downsampling) reduces the dimensionality of
each feature map

2. Retains the ***most important information***

1. Max pooling例子:

Pooling is unsensitive to local translation.(局部不变性)
– “if we translate the input by a small amount,
the values of most of the pooled outputs do
not change.”

2. Pooling的变种

Pooling should be designed to fit specific
applications.

  • Max pooling
  • Average pooling
  • Min pooling
  • l 2 -norm pooling
  • Dynamic k-pooling
  • Etc.

3. Pooling的性质

  • Makes the input representation (feature dim) smaller and more manageable
  • Reduces number of parameters and computations in the network, therefore, controlling overfitting
  • Makes the network invariant to small transformations, distortions and translations in the input image
  • Help us arrive at almost scale invariant representation of our image

2.7 Flatten

2.8 Convolution v.s. Fully Connected

2.9 The whole CNN

##3. Why CNN

  • Some patterns are much smaller than the whole image.
  • The same patterns appear in different regions.
  • Subsampling the pixels will not change the object

Soga~

4. 对CNN的其他一些理解

4.1 关于接受域(receptive field)

称在底层中影响上层输出单元 $s$ 的单元集合为 $s$ 的接受域(receptive field).

4.2 卷积与池化作为一种无限强的先验

首先,弱先验具有较高的熵值,因此自由性较强.强先验具有较低的熵值,这样的先验在决定参数最终取值时可以起着非常积极的作用.

把卷积网络类比成全连接网络,但对于网络的权重具有无限强的先验.a) 所有隐藏单元的权重是共享的.b) 除了一些连续的小单元的权重外,其他的权重都是0.c) 池化也是一个无限强的先验:每个单元都具有对少量平移的不变性.

卷积和池化可能导致欠拟合! 任何其他先验类似,卷积和池化只有当先验的假设合理且正确时才有用。如果一项任务依赖于保存精确的空间信息,那么在所有的特征上使用池化将会增大训练误差。

根据实际需求选取先验

CNN实现

1. 反向传播

基本与FFNNs相同.

2. 共享权值的梯度问题

一个常见的做法:取梯度的平均值

3. CNN in Keras

4. CNN in Pytorch

a) Pytorch 相关接口

torch.nn.Conv2d:

torch.nn.functional.max_pool2d:

b) LeNet in PyTorch.

import torch.nn as nn
import torch.nn.functional as F

class LeNet(nn.Module):
    def __init__(self):
        super(LeNet, self).__init__()
        self.conv1 = nn.Conv2d(1, 6, 5)   #in_channels:1, out_channels:6, kernel_size:5
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1   = nn.Linear(16*5*5, 120)
        self.fc2   = nn.Linear(120, 84)
        self.fc3   = nn.Linear(84, 10)

    def forward(self, x):
        out = F.relu(self.conv1(x))
        out = F.max_pool2d(out, 2)
        out = F.relu(self.conv2(out))
        out = out.view(out.size(0), -1)
        out = F.relu(self.fc1(out))
        out = F.relu(self.fc2(out))
        out = F.softmax(self.fc3(out))
        return out

原文地址:https://www.cnblogs.com/petewell/p/11408855.html

时间: 2024-10-12 15:03:00

Convolutional Neural Networks的相关文章

Learning to Compare Image Patches via Convolutional Neural Networks --- Reading Summary

Learning to Compare Image Patches via Convolutional Neural Networks ---  Reading Summary 2017.03.08 Target: this paper attempt to learn a geneal similarity function for comparing image patches from image data directly. There are several ways in which

(转)A Beginner's Guide To Understanding Convolutional Neural Networks Part 2

Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolutional Neural Networks Part 2 Introduction Link to Part 1 In this post, we’ll go into a lot more of the specifics of ConvNets. Disclaimer: Now, I do reali

(转载)Convolutional Neural Networks卷积神经网络

Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional Neural Networks卷积神经网络 三:LeCun的LeNet-5 四:CNNs的训练过程 五:总结 本文是我在20140822的周报,其中部分参照了以下博文或论文,如果在文中有一些没说明白的地方,可以查阅他们.对Yann LeCun前辈,和celerychen2009.zouxy09表示感谢

Convolutional Neural Networks at Constrained Time Cost(精读)

一.文献名字和作者 Convolutional Neural Networks at Constrained Time Cost,CVPR 2015 二.阅读时间 2015年6月30日 三.文献的目的 作者希望在保持计算复杂度的前提下,通过修改模型深度和卷积模板的参数来提高CNN的准确率.作者通过大量的实验来找到网络结构中不同的参数的重要性,并在ImageNet2012数据集上面取得有竞争力的效果. 四.文献的贡献点 作者的贡献主要在于通过各种对比实验来说明不同的参数对于准确率的影响.理论方面的

【原创】梵高油画用深度卷积神经网络迭代十万次是什么效果? A neural style of convolutional neural networks

作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作卷积神经网络风格迁移. 这不是“暮光女”克里斯丁的研究方向吗?!连好莱坞女星都开始搞人工智能发paper,真是热的可见一斑! 这篇文章中讲述了如何用深层卷积神经网络来将一张普通的照片转化成一幅艺术风格的画作(比如梵高的星夜),可以看做是DL(deep learning)在NPR(非真实渲染non p

tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving>,论文中的效果还不错,后来查了一下,有一个Tensorflow版本的实现,因此在自己的机器上配置了Tensorflow的环境,然后将其给出的demo跑通了,其中遇到了一些小问题,通过查找网络上的资料解决掉了,在这里

(转)A Beginner&#39;s Guide To Understanding Convolutional Neural Networks

Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolutional Neural Networks Introduction Convolutional neural networks. Sounds like a weird combination of biology and math with a little CS sprinkled in, but

深度学习笔记(一)卷积神经网络(Convolutional Neural Networks)

一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张"薄饼",其中包括了图片的高度.宽度和深度(即颜色,用RGB表示). 在不改变权重的情况下,把这个上方具有k个输出的小神经网络对应的小块滑遍整个图像,可以得到一个宽度.高度不同,而且深度也不同的新图像. 卷积时有很多种填充图像的方法,以下主要介绍两种,一种是相同填充,一种是有效填充. 如图中

论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理跟踪问题.众所周知,CNN在很多视觉领域都是如鱼得水,唯独目标跟踪显得有点“慢热”,这主要是因为CNN的训练需要海量数据,纵然是在ImageNet 数据集上微调后的model 仍然不足以很好的表达要跟踪地物体,因为Tracking问题的特殊性,至于怎么特殊的,且听细细道来. 目标跟踪之所以很少被 C

卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalization Layer Fully-Connected Layer Converting Fully-Connected Layers to Convolutional Layers ConvNet Architectures Layer Patterns Layer Sizing Patterns C