Python人工智能深度学习CNN
1.CNN概述
CNN的整体思想,就是对图片进行下采样,让一个函数只学一个图的一部分,这样便得到少但是更有效的特征,最后通过全连接神经网络对结果进行输出。
整体架构如下:
输入图片
→卷积:得到特征图(激活图)
→ReLU:去除负值
→池化:缩小数据量同时保留最有效特征
(以上步骤可多次进行)
→输入全连接神经网络

2.卷积层
CNN-Convolution
卷积核(或者被称为kernel, filter, neuron)是要被学出来的,卷积核中的数就是权重(参数)

做内积,把卷积核的每一个参数和图像中对应位置的数字相乘(对应位置的元素相乘,不同于矩阵乘法),再求和。相当于一个神经元,对输入的数据,进行权重的分配,而权重就是卷积核的数据。再求和,就是第一个神经元所得到的结果。把这个权重对图片所有数据进行处理,就得到第一个激活图或特征图(feature map)。我们可以增加卷积核的数量,就会得到多层激活图,可以更好的保留数据的空间尺寸。

当卷积核与图片进行相乘相加的时候,如果卷积核此时正在计算的区域数字分布与卷积核类似,所得的求和结果会很大(称为卷积核被激活了),而其他地方会很小,说明图像在这个区域,有和卷积核类似的图案。

一个卷积核只能识别一个特征。因此我们需要添加多个卷积核,卷积核越多,得到的激活图就越深,输入图像的信息就越多。

对于彩色的图来说,不需要把颜色分开,卷积核的深度和图像深度是一样的,比如彩色是红绿蓝三层,那么卷积核也是三层。
卷积层相当于降采样的神经网络,如下图,本来应该连接36个神经元,但实际连接了9个。

3.池化层
CNN-MaxPooling
在Max Pooling,也就是池化层之前,会需要进行一个ReLU函数转化,即把小于0的值全转为0,其他的不变。
池化层主要就是为了减少数据量,选一个尺寸之后,直接用尺寸中的最大值代替那个尺寸。这样可以减少数据从而减少运算量。

如下图所示,输入数据原本是6*6,通过卷积层之后变成4*4,通过池化层之后变成2*2。对于实际的图片来说,维度可能很高,因此卷积层,池化层可以多次进行。

4.全连层
将最后得到的高层次特征输入全连接的神经网络,即全连层。全连层就是一个全连接的神经网络,它的参数数量就是最后的池化层输出的数据数量。
同样的,前向传播后,计算损失函数后进行后向传播,得到各参数的梯度,对各参数进行更新,直到找到最佳参数。
因此,在全连接之前的所有层,不管多少层的卷积、池化,都是为了得到更好的特征的同时降低数据量。使得模型可以更好地训练。
以上就是Python人工智能深度学习CNN的详细内容,更多关于人工智能CNN深度学习的资料请关注脚本之家其它相关文章!
相关文章
python神经网络tensorflow利用训练好的模型进行预测
这篇文章主要为大家介绍了python神经网络tensorflow利用训练好的模型进行预测,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-05-05
python logging.basicConfig不生效的原因及解决
今天小编就为大家分享一篇python logging.basicConfig不生效的原因及解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-02-02
Django-simple-captcha验证码包使用方法详解
这篇文章主要介绍了Django-simple-captcha验证码包使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-11-11


最新评论