【人工智能基础三】卷积神经网络基础(CNN)

news2024/9/19 21:39:59

文章目录

    • 1. 卷积神经网络结构
    • 2. 卷积神经网络计算
      • 2.1. 卷积层计算
      • 2.2. 池化层计算
      • 2.3. 全连接层计算
    • 3. 典型卷积神经网络
      • 3.1. AlexNet
      • 3.2. VGGnet

卷积神经网络(Convolutional Neural Network,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Network),是深度学习的代表算法之一。

卷积神经网络具有表征学习(Representation Learning)能力,能够按其阶层结构对输入信息进行平移不变分类(Shift-invariant Classification),因此也被称为平移不变人工神经网络(Shift-Invariant Artificial Neural Network,SIANN)。

卷积神经网络仿照生物的视知觉(Visual Perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化 (Grid-like Topology)特征(如像素和声频)进行学习。有稳定的效果且对数据没有额外的特征工程(Feature Engineering)要求。

 

1. 卷积神经网络结构

典型的卷积神经网络结构主要分为输入层、卷积层、池化层、全连接层、分类层等,如下图:
在这里插入图片描述

分类描述
输入层(Input Layer)1. 输入层是整个神经网络的输入, 在处理图像的卷积神经网络中,它一般代表了一张图片的像素矩阵。 其中三维矩阵的长和宽代表了图像的大小,深度代表了图像的色彩通道(Channel)。例如黑白图的深度为1,而在RGB色彩模式下,图像的 深度为3。
2. 从输入层开始,卷积神经网络通过不同的神经网络架构将上一层的三维矩阵转换为下一层的三维矩阵,直到最后的全连接层。
卷积层(Convolution Layer)1. 是卷积神经网络结构中最重要的部分,使用一组可学习的过滤器(卷积层)来提取输入数据的空间特征。
2. 通过卷积能获得抽象度更高的特征,一般来说经过卷积层处理的节点会变得更深。
3. 卷积具有权重共享的特性,可以减低参数数量,防止由于参数过多而造成过拟合。
池化层(Pooling Layer)1. 又称欠采样或下采样,对特征图进行下采样,减低特征维度,减少参数防止过拟合;
2.池化层神经网络不会改变三维矩阵的深度,但是它可以`缩小矩阵的长宽,从而进一步减小全连接层节点的个数,进而减小整个神经网络参数。
全连接层(Full Connection Layer)1. 经过几轮卷积和池化之后,可以认定图像中的信息已经被抽象成信息含量更高的特征,完成了特征提取,最后一般会有1到2个全连接层完成分类问题。
2. 全连接层将前一层输出展平后连接到每个神经元,用于学习非空间特征,将特征映射到输出。
3. 我们可以将卷积层和池化层看作自动图像特征提取的过程,在特征提取之后,仍要用全连接层来完成分类问题。
Softmax层Softmax层主要用于分类,通过Softmax层可以得到当前输出属于不同种类的概率分布情况。该层主要采用 Softmax函数,又称归一化指数函数,如下公式在这里插入图片描述

 

2. 卷积神经网络计算

2.1. 卷积层计算

卷积层神经网络结构中最重要的部分就是过滤器(Filter)或者 叫作内核(Kernel),如下图显示了这一结构。过滤器可以将当前神经网络的一个子节点矩阵转化为下一层神经网络的一个单位节点矩阵。单位节点矩阵就是长和宽都是1,但深度不限的节点矩阵。

在这里插入图片描述

  • 在一个卷积层中,过滤器所处理的节点矩阵的长和宽都是人为设定的,这个节点矩阵的尺寸也被称为过滤器的尺寸。
  • 因为过滤器处理的矩阵深度和当前神经网络节点矩阵的深度是相同的,所以尽管过滤器的节点矩阵是三维的,但是只需给出二维矩阵即可。
  • 另外一个需要人为设定的是过滤器的深度,也即输出单位节点矩阵的深度。如上图,左侧小矩阵的尺寸为过滤器的尺寸,而右侧单位矩阵的深度为滤波器的深度。

 

(1)重要参数介绍
卷积层有一些重要的超参数需要配置,下面进行一一介绍。

参数说明
卷积核大小(kernal_size)卷积核一般宽和高都比较小,如果输入是图片,宽高一般相同,比如3x3、5x5等,但是深度必须与输入维度一致。如输入图像是28 x 28 x 3的彩色图片,卷积核可以是3 x 3 x 3,这算作一个卷积核。
卷积核数量(out_channels)1. 卷积核数量即卷积产生的通道数,不同卷积核在输入数据中寻找不同特征
2. 一般卷积核数量大于输入通道数,并且随着卷积的进行卷积核数量越来越多,从而提取的特征越来越多,如VGGNet-16卷积核数量经历了从64-128-256-512的过程。
步长(stride)1. 在滑动卷积核时,必须指定步长。
2. 步长为1,卷积核每次移动1个像素;步长为2每次移动2个像素,当然步长也可以是不常用的3,或者更大的数字,但这些在实际中很少使用)。一般这个操作会让输出数据体在空间上变小。
零填充(padding)有时候将输入数据用0在边缘处进行填充是很方便的。这个零填充(zero-padding)的尺寸是一个超参数。零填充有一个良好性质,即可以控制输出数据的空间尺寸(最常用的是用来保持输入数据体在空间上的尺寸,使得输入和输出的宽高都相等)。

 

(2)参数量及特征图计算

假设输入数据维度为 W × H × C ∈ W \times H \times C _ { \in } W×H×C,卷积核尺寸 K × K K \times K K×K,步长S,卷积核数量 C o u t C _ { o u t } Cout,零填充数(量为P,则特征图的 宽 W 高 H 2 深 D 2 宽W高H _ { 2 }深D _ { 2 } WH2D2计算公式分别为

W 2 = H 2 = ( W − K + 2 P ) / S + 1 W _ { 2 } = H _ { 2 } = ( W - K + 2 P ) / S + 1 W2=H2=(WK+2P)/S+1
D 2 = C o u t D _ { 2 } = C _ { o u t } D2=Cout

 
参数量计算公式 C o u t × ( K × K × C i n + 1 ) C _ { o u t } \times ( K \times K \times C _ { in } + 1 ) Cout×(K×K×Cin+1)

其中1表示每个卷积核都需要加上一个偏置。

特征图上每一个点的计算采用下列方式,假设输入图像维度是 5 × 5 × 3 5 \times 5 \times 3 5×5×3,卷积核维度是 3 × 3 × 3 3 \times 3 \times 3 3×3×3,卷积核数量为2,步长2,Padding1,经过计算可知
W 2 = H 2 = ( W − K + 2 P ) / S + 1 = ( 5 − 3 + 2 ) / 2 + 1 = 3 , D 2 = 2 W _ { 2 } = H _ { 2 } = ( W - K + 2 P ) / S + 1 = ( 5 - 3 + 2 ) / 2 + 1 = 3 , D _ { 2 } = 2 W2=H2=(WK+2P)/S+1=(53+2)/2+1=3,D2=2,即特征图尺寸为 3 × 3 × 2 3 \times 3 \times 2 3×3×2 特征图,具体计算方式如下图。

在这里插入图片描述

以上就是卷积层卷积的计算,体现了卷积神经网络的局部连接和权值共享特性,通过卷积操作,参数的数量大幅降低

 

2.2. 池化层计算

池化层可以有效地缩小矩阵的尺寸,从而减少最后全连接层的数量,加快计算速度的同时防止过拟合问题。

池化的方式很多,最常用的池化方式是
最大池化(Max Pooling) 和平均池化(Average Pooling)

与卷积层的过滤器类似,池化层的 过滤器也需要设置尺寸,唯一不同的是池化层的过滤器只影响一个深 度上的节点,即主要减小矩阵的长和宽,不减少矩阵的深度,虽然池化层可以减少矩阵的深度,但是在实际应用中不会这样使用。

如下展示了一个最大池化计算过程的例子。注意池化层只减小了矩阵的长和宽,并未 减少矩阵的深度。

在这里插入图片描述

 

2.3. 全连接层计算

全连接层不保存分类信息,在整个卷积神经网络中起到分类器的作用,下面举例介绍下全连接层的计算过程,设 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3为全连接层的输入, a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3为输出,则有:
在这里插入图片描述

假设全连接层的输入维度是800,输出维度是500,则:

  1. Loss对全连接的输入求导

在这里插入图片描述

  1. Loss对权重系数求导

在这里插入图片描述

  1. 对偏执系数求导 ing

 

3. 典型卷积神经网络

3.1. AlexNet

该网络2012年由Hinton学生Alex提出,是Lenet加宽版,包含65万神经元,5个卷积层,3个池化层,3个全连接,如图 5-21所示。Alex首次采用GPU硬件加速;成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了 Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题

训练逻辑

  • 训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合;
  • 使用最大池化,避免平均池化的模糊化效果;
  • 让步长比池化核的尺寸小·,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性;

在这里插入图片描述

 

3.2. VGGnet

VGGNet由牛津大学的视觉几何组和 Google DeepMind公司的研究员一起研发的深度卷积神经网络,在 ILSVRC 2014上取得了第二名的成绩,将Top-5错误率降到7.3%。

它主要的贡献是展示出网络的深度(depth)是算法优良性能的关键部分。

VGGnet-16各层处理过程如下:
在这里插入图片描述
计算过程
在这里插入图片描述

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1974684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1、 window平台opencv下载编译, 基于cmake和QT工具链

1. 环境准备,源码下载 1.1 前置环境 qt 下载安装cmake 安装,可参考: https://blog.csdn.net/qq_51355375/article/details/139186681 1.2 opencv 源码下载 官网地址: https://opencv.org/releases/ 下载源码: 2 …

(2024,∞-Brush,无限维扩散,希尔伯特空间,超分辨率,跨注意力神经算子,线性注意)具有无限维度扩散模型的可控大图像合成

∞-Brush: Controllable Large Image Synthesis with Diffusion Models in Infinite Dimensions 目录 0. 摘要 1. 简介 2. 相关工作 4. 提出的方法 4.1 函数空间中的条件扩散模型 4.2 带有跨注意力神经算子的条件去噪器 5. 实验 6. 限制 7. 结论 0. 摘要 将复杂、特定…

【C++】C++11(可变参数模板、lambda表达式、包装器)

文章目录 1. 可变参数模板1.1 介绍1.2 emplace系列接口实现 2. lambda表达式2.1 语法介绍2.2 原理 3. 包装器4. bind 1. 可变参数模板 1.1 介绍 可变参数我们在C语言阶段已经了解过了,C语言中叫做可变参数列表,其中使用 ... 代表可变参数。 C语言中的可…

百款精选的HTML5小游戏源码,你可以下载并直接运行在你的小程序或者自己的网站上

今天我带来了一份特别的礼物——百款精选的HTML5小游戏源码,你可以下载并直接运行在你的小程序或者自己的网站上,只需双击index.html即可开始。无论你是在寻找创意引流,还是想为你的网站增添互动性,这些小游戏都能帮你实现&#x…

Arch Linux - 2-安装中文输入法

文章目录 2 安装中文输入法2.0 准备2.0.1 前置条件2.0.2 建议 2.1 方案一:RimeIBus2.1.1 安装&配置2.1.2 添加输入法 2.2 方案二:IBusLibpinyin 2 安装中文输入法 2.0 准备 2.0.1 前置条件 预装gnome # 安装 pacman -S gnome# 设置开机自启动 sy…

开放式耳机有什么用?市面上热门的四款蓝牙耳机推荐

开放式耳机的用处相当广泛。 其一,它在耳朵健康方面表现出色。长期使用入耳式或者封闭式耳机,容易致使耳道处于潮湿状态、细菌大量滋生,甚至诱发耳部疾病。而开放式耳机不会阻塞耳道,能够使耳朵维持通风且干燥的状态,…

分享5款漂亮、简洁的登录页面模板分享,拿来即用(二)

文章目录 前言一、Bootstrap Material 风格的登录模板二、简洁清晰的jQuery登录模板三、防知乎的登录模板四、背景动态变化的登录模板五、背景动态变化的登录模板2六、深色背景登录模板 前言 在做管理系统的时候,有时为了做一个漂亮简洁的登录页面,对应…

【Log4j2】log4j-users-guide 官方文档阅读笔记

文章目录 前言1. Log4j2 架构直观了解2. Logger 的树状结构及 additivity3. Logger 的 Level 属性4. Filter 的结构5. Filter 作用的规则 前言 原文 Apache Log4j 官方文档 pdf需求 将指定包目录的日志打到指定文件中将 ERROR 日志单独打到指定文件中 目标 理解 log4j2 的架构…

java学习--集合

集合简介 关系示例图 Collection接口实现类的特点 Collection接口常用方法 Collection接口遍历元素方式: import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;/* author:我与java相爱相杀---c语言梦开始的地方 今天又是努力学习的…

【vulnhub】The Ether: Evil Science靶机

靶机安装 下载地址:https://www.vulnhub.com/entry/the-ether-evilscience-v101,212/ 运行环境:Vmware 信息收集 进行IP发现 nmap 192.168.93.0/24 进行端口扫描,开放了80和22端口 nmap -A 192.168.93.155 -p- 进行目录扫描 dirsearch -u http://…

MATLAB(15)分类模型

一、前言 在MATLAB中,实现不同类型的聚类(如K-means聚类、层次聚类、模糊聚类)和分类(如神经网络分类)需要用到不同的函数和工具箱。下面我将为每种方法提供一个基本的示例代码。 二、实现 1. K-means聚类 % 假设X是…

现代前端架构介绍(第一部分):App是如何由不同的构建块构成的

远离JavaScript疲劳和框架大战,了解真正重要的东西 几周前,我的同事们对我们的前端架构、代码结构和面临的挑战很感兴趣。在做了几次关于如何构建可扩展且健壮的前端的演讲后,我觉得把它们都总结一下并与社区分享我们的策略是一个不错的主意。…

主机安装要点

1.选择主板时,一定要先看能不能与 CPU 匹配得上。 2.后缀带 K 的 CPU,因为支持超频,也最好搭配 支持超频 系列主板。 3.主板尺寸大小E-ATX 加大板、ATX 大板、M-ATX 小板、ITX 迷你板,符合机箱大小。 4.部分主板不带A-RGB,有灯…

OpenHarmony应用开发和Android应用开发区别

OpenHarmony 和 Android 是两个不同的操作系统平台,各自有其独特的开发环境和架构。以下是 OpenHarmony 应用开发与 Android 应用开发之间的主要区别: 1. 架构设计 OpenHarmony 微内核架构:OpenHarmony 采用微内核设计,核心功…

中科院2区SCI,稳定检索39年!不收版面费,审稿友好,最快6周录用,速投!

关注GZH【欧亚科睿学术】,第一时间了解期刊最新动态! 中科院2区SCI,最快6周录用! MACHINE LEARNING 是一本国际性期刊,由知名出版社SPRINGER出版,创刊于1986年,一直致力于发布报道高质量的机器…

2、 qt平台opencv引入,和工程搭建

1. 准备工作 opencv 编译, 参考: https://blog.csdn.net/qq_51355375/article/details/140857966vscode qt cmake工程创建及环境搭建: https://blog.csdn.net/qq_51355375/article/details/140752130 2. 引入opencv 头文件和链接库 2.1 配…

大数据信用报告查询注意事项

在当今这个数据驱动的时代,大数据信用报告已成为评估个人信用状况的重要参考。无论是申请贷款、租房还是求职,一份良好的信用报告都能为您加分不少。然而,在查询大数据信用报告时,有几点注意事项不容忽视,以确保您的信…

CAN通信编程

ubuntu使用虚拟can 1. sudo modprobe vcan //加载虚拟can模块 2. sudo ip link add dev can0 type vcan //添加can0网卡 3. ifconfig -a //查看can0 4. sudo ip link set dev can0 up //开启can0 5. sudo ip link set dev can0 down //关闭can0 6. sudo ip link del dev can0 /…

图数据库 Nebula Graph下载安装

1. 安装包下载解压 进入官网https://www.nebula-graph.com.cn/download,下载对应版本 tar -zxvf nebula-graph-3.8.0.ubuntu2004.amd64.tar.gz cd nebula-graph-3.8.0.ubuntu2004.amd64/2. 启动 Nebula Graph 服务 2.1 修改配置文件名以应用配置 将子目录etc中的…

用Python代码制作一个全自动扫雷(详细教程)

用PythonOpenCV实现了自动扫雷,突破世界记录,我们先来看一下效果吧。 中级 - 0.74秒 3BV/S60.81 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣…