Python人工智能深度学习CNN

作者:Swayzzu 时间:2023-11-27 06:19:15 

1.CNN概述

CNN的整体思想,就是对图片进行下采样,让一个函数只学一个图的一部分,这样便得到少但是更有效的特征,最后通过全连接神经网络对结果进行输出。

整体架构如下:

输入图片

→卷积:得到特征图(激活图)

→ReLU:去除负值

→池化:缩小数据量同时保留最有效特征

(以上步骤可多次进行)

→输入全连接神经网络

Python人工智能深度学习CNN

2.卷积层

CNN-Convolution

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

Python人工智能深度学习CNN

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

Python人工智能深度学习CNN

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

Python人工智能深度学习CNN

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

Python人工智能深度学习CNN

对于彩色的图来说,不需要把颜色分开,卷积核的深度和图像深度是一样的,比如彩色是红绿蓝三层,那么卷积核也是三层。

卷积层相当于降采样的神经网络,如下图,本来应该连接36个神经元,但实际连接了9个。

Python人工智能深度学习CNN

3.池化层

CNN-MaxPooling

在Max Pooling,也就是池化层之前,会需要进行一个ReLU函数转化,即把小于0的值全转为0,其他的不变。

池化层主要就是为了减少数据量,选一个尺寸之后,直接用尺寸中的最大值代替那个尺寸。这样可以减少数据从而减少运算量。

Python人工智能深度学习CNN

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

Python人工智能深度学习CNN

4.全连层

将最后得到的高层次特征输入全连接的神经网络,即全连层。全连层就是一个全连接的神经网络,它的参数数量就是最后的池化层输出的数据数量。

同样的,前向传播后,计算损失函数后进行后向传播,得到各参数的梯度,对各参数进行更新,直到找到最佳参数。

因此,在全连接之前的所有层,不管多少层的卷积、池化,都是为了得到更好的特征的同时降低数据量。使得模型可以更好地训练。

来源:https://blog.csdn.net/Swayzzu/article/details/121043334

标签:Python,CNN,人工智能
0
投稿

猜你喜欢

  • Django中传递参数到URLconf的视图函数中的方法

    2021-09-16 23:46:33
  • python使用sklearn实现决策树的方法示例

    2023-03-25 07:44:28
  • Sql Server 数据库超时问题的解决方法

    2009-01-13 14:11:00
  • 基于Tensorflow高阶读写教程

    2022-10-05 02:37:27
  • 浅谈python中的多态

    2022-09-13 16:45:40
  • TensorFlow的自动求导原理分析

    2023-06-14 15:22:02
  • JS清除IE浏览器缓存的方法

    2024-04-19 10:15:25
  • Mysql查询最近一条记录的sql语句(优化篇)

    2024-01-17 02:33:57
  • Python使用文件锁实现进程间同步功能【基于fcntl模块】

    2022-07-04 17:45:15
  • 解决golang读取http的body时遇到的坑

    2024-02-13 19:47:32
  • Java数据类型与MySql数据类型对照表

    2024-01-15 19:32:13
  • Python快速实现分列转到行的示例代码

    2021-08-13 09:14:11
  • asp判断ip及ip段范围的一组函数小记

    2008-12-09 18:23:00
  • Python异常对代码运行性能的影响实例解析

    2023-10-18 23:35:39
  • 完全讲解 使用MSCS建立SQL Server集群

    2009-01-19 14:10:00
  • 秒杀场景的缓存、队列、锁使用Redis优化设计方案

    2023-05-29 19:07:18
  • JavaScript游戏开发之键盘控制层的移动

    2008-09-13 19:29:00
  • python中如何使用正则表达式的非贪婪模式示例

    2022-08-28 08:43:49
  • DropDownList绑定选择数据报错提示异常解决方案

    2023-07-18 04:36:13
  • Go语言如何使用golang-jwt/jwt/v4进行JWT鉴权详解

    2024-02-07 05:13:41
  • asp之家 网络编程 m.aspxhome.com