卷积神经网络CNN原理详解
卷积神经网络CNN原理详解
卷积神经网络CNN原理详解
之前完成一个AI芯片的IP设计
旨在做一个针对图像识别IP核
由此开始正式进入CNN这一未知领域
正文分界线
~~
卷积神经网络——Concolutional Neural Network
一个典型的卷积神经网络可以分为以下几部分:
输入层——卷积层——激活层——池化层——卷积层——激活层——池化层——卷积层——全连接层——输出层
CNN已广泛应用于影像识别、病情整断,车载识别。
自认为最好的NN讲解
文中推荐了一个网址,力赞
在线CNN直观了解运行机理网站
第一步:卷积——Conv
上图是一个典型的卷积过程,左边5✖5的方格代表输入图像像素,中间3✖3窗口为卷积核又称为过滤器,直观的看来5✖5输入矩阵经过3✖3的卷积核处理,图像缩小为3✖3(n-2).
这一过程可能会存在特征丢失,为解决这一问题引入padding操作,比如将55扩充成66,扩充单元设置为0。
CNN神经网络的很大计算量存在于此Conv层,大量的存取,计算,极大的拉高了电路的功耗。
第二步:激活层——Activation Function
激活函数主要分为四种:
第一种激活函数:Sigmoid
公式如下
百度百科找到的图像如下,定义域在(-∞,+∞),值域(0,1)
优点:Sigmod函数实现了0 to 1 的平缓变化。
缺点:常造成逆向参数调整时的梯度消失。
第二种激活函数:tanh
为了缓解梯度消失引入反曲正切函数,函数式如下:
下图贴上tanh x函数的图像同样的定义域,值域从(0,1)扩大到(-1,1)
第三种激活函数:ReLu——隐藏层默认激活函数
优点:可以拟合任何非线性函数
公式为:max(0,x)
上面公式的意思也就是说去掉其中小于0的数,用0代替。
第四种激活函数:Leaky Relu
是ReLu激活函数的变形
在小于0的部分以较小斜率,解决神经元直接熄灭问题
四种激活函数的常用优先级:ReLu,Leaky ReLu > Tanh > sigmoid
其中Tanh和Sigmoid常用于RNN——循环神经网络中。
第三步:池化层——pooling
以最大池化为例
图中最大池化将原本的4✖4的数据变成2✖2的数据,极大地压缩了数据量。
第四步:数据扁平化处理——flatten operation
多个n维数据,排成一维数据
第五步:全连接&输出层激活函数
- 针对二分类问题,使用Sigmoid函数判断是否。
- 针对多分类问题,使用Softmax函数输出各类别概率,概率和为1
-多标签问题——图像里有多个类别,输出各个类别的概率,概率和>1
-线性回归问题,采用线性函数作为激活函数。
至此CNN便结束了下面贴上一张CNN运行直观图——识别杯子的过程。
更多推荐
所有评论(0)