Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译) Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

这篇文章 我们将会介绍一下基于卷积神经网络的图像分类器,为了实现这个图像分类器,我们将会创建一个6层的神经网络用于区分猫咪和狗狗。

传统的神经网络非常擅长图像分类,如果在CPU上进行训练,会得到更多的参数,并且会花费大量的时间,然而,在这篇文章中,我的目标是向您展示如何使用Tensorflow构建一个真实的卷积神经网络,而不是参与ILSVRC。在开始学习Tensorflow教程之前,让我们先学习卷积神经网络的基础知识。

神经网络本质上是求解优化问题的数学模型,它们是由神经元构成的,神经元是神经网络的基本计算单元。神经元接受一个输入(比如x),对它做一些计算(比如:用一个变量w乘以另一个变量b)来产生一个值(比如;z = wx + b)。这个值被传递给一个名为激活函数(f)的非线性函数,以产生神经元的最终输出。激活函数有很多种。其中一个常用的激活函数是Sigmoid(归一化)

 

 Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

根据激活功能的不同,神经元被命名为RELU, TanH等(记住这一点)。一个神经元可以连接多个神经元。

Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

这个例子中,你可以看到权值是连接的属性,即每个连接都有不同的权值,而偏差是神经元的属性。这是生成输出y的SIGMOID神经元的全图。

Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

如果你把神经元堆成一行,就叫做层;这是神经网络的下一个组成部分。

Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

正如你在上面看到的,绿色的神经元组成1层,这是网络的第一层,输入数据通过它传递到网络。类似地,最后一层称为输出层,如红色所示。输入层和输出层之间的层称为隐藏层。在这个例子中,我们只有一个蓝色的隐藏层。有许多隐含层的网络往往更准确,被称为深度网络,因此使用这些深度网络的机器学习算法被称为深度学习。

Types of layers:

通常,一个层中的所有神经元都做类似的数学运算,这就是这个层的名字的由来(除了输入层和输出层,因为它们只做很少的数学运算)。下面是你应该知道的最流行的层类型:

Convolutional Layer:

卷积是一种数学运算,它用于单次处理中对信号进行滤波,寻找信号中的模式等。在卷积层中,所有的神经元都对输入进行卷积运算,因此称为卷积神经元。

卷积神经元中最重要的参数是滤波器的大小,假设我们有一个滤波器大小为5*5*3的层。同时,假设输入卷积神经元的图像大小为32*32,有3个通道。我们从图像中选择一个5*5*3(3表示彩色图像中的通道数)大小的块,并计算与滤波器(w)的卷积(点积)。这个卷积运算会得到一个单独的数字作为输出。我们还将把偏差(b)加到这个输出中。

为了计算点积,过滤器的第三维必须与输入中的通道数相同。也就是说,当我们计算点积的时候,它是一个矩阵乘以5*5*3大小的块和5*5*3大小的滤波器。我们将卷积滤波器滑过整个输入图像来计算整个图像的输出,如下图所示:

 Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

 

Pooling Layer:

池化层主要是在卷积层之后立即使用,以减少空间大小(仅限宽度和高度,不包括深度)。这减少了参数的数量,从而减少了计算量。此外,较少的参数可以避免过拟合(现在不要担心,稍后将对此进行描述)。最常见的池形式是Max pooling,我们使用大小为F*F的过滤器,并对图像大小为F*F的部分应用最大操作。

Tensorflow Tutorial 2: image classifier using convolutional neural network Part-1(译)
Part-1: Basics of Convolutional Neural network (CNN):卷积神经网络基础

Fully Connected Layer:

如果一层中的每个神经元都接收到来自前一层中所有神经元的输入,那么这一层称为完全连接层。该层的输出由矩阵乘法和偏置偏移量计算。

reference:https://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/