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

文章目录

    • 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.rhkb.cn/news/390762.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

1、用pycharm打开项目,一定要打开包含manage.py文件所在文件夹 2、配置解释器:建议使用Anaconda(Python 3.8(base)),低于3.8版本的,页面会不兼容 3、安装依赖库:打开pycharm的终端,输入: pip in…

Docker-学习笔记(借助宝塔面板)

ubuntu环境 一、安装 可以参考官网进行或其他博客进行安装 1.进入宝塔面板 进图Docker菜单,查看是否提示安装。 2.查看是否安装 查看版本 docker -v 证明已经安装 二、常用命令 1.查看版本 docker -v 2.启动、停止、重启docker systemctl start docker…

自制安卓车机软件(含APP)

本软件使用APPinventor2编程软件,耗时5天和3天调试,具有高德导航,视频播放,网易云音乐,酷狗,抖音,(需下载车机版软件)和自定义添加软件,网页有哔哩哔哩&#…

无人机工程师技术高级证书详解

随着无人机技术的飞速发展,其在航拍、农业、测绘、救援、物流等多个领域的应用日益广泛,对无人机工程师的专业技能与综合素质提出了更高要求。无人机工程师技术高级证书,作为对无人机领域高级工程师专业技能的权威认证,不仅是对个…

简单搭建dns服务器

目录 一.安装服务 二.编写子配置文件 三.编写主配置文件 四.编写文件 五.测试 一.安装服务 [rootnode1 ~]# dnf install bind -y 二.编写子配置文件 [rootnode1 ~]# vim /etc/named.rfc1912.zones 三.编写主配置文件 [rootnode1 ~]# vim /etc/named.conf 四.编写文件 …

【Python】Numpy概述安装及使用

文章目录 Numpy概述Numpy开发环境搭建Numpy使用创建数组创建一维数组创建二维数组创建三维数组,array()函数ndmin参数的使用array()函数dtype参数的使用随机数创建 Numpy概述 Numpy是科学计算基础库,提供大量科学计算相关功能,比如数据统计&…

GuLi商城-商品服务-API-新增商品-调试会员等级相关接口

在网关服务中配置路由: 代码: nacos这些服务都要启动: 如果有不是一个命名空间中的,要改成同一个命名空间中 启动商品product服务遇到循环依赖问题,解决:

Leetcode 第 135 场双周赛题解

Leetcode 第 135 场双周赛题解 Leetcode 第 135 场双周赛题解题目1:3222. 求出硬币游戏的赢家思路代码复杂度分析 题目2:3223. 操作后字符串的最短长度思路代码复杂度分析 题目3:3224. 使差值相等的最少数组改动次数思路代码复杂度分析 题目4…

classical Chinese

classical Chinese 中型娃娃暑假作业背诵 文言文《伯牙鼓琴》 1)拿到文言文,先看一遍 2)用白话文(现代文)翻译一次 3)用白话文对照回去文言文(白话文中那些需要替换回文言文呢) 虽…

神奇海洋养鱼小程序游戏广告联盟流量主休闲小游戏源码

在海洋养鱼小程序中,饲料、任务系统、系统操作日志、签到、看广告、完成喂养、每日签到、系统公告、积分商城、界面设计、拼手气大转盘抽奖以及我的好友等功能共同构建了一个丰富而互动的游戏体验。以下是对这些功能的进一步扩展介绍: 饲料 任务奖励&a…

非对称加密:数据安全的双重保障

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

单元测试JUnit

前言👀~ 上一章我们介绍了自动化测试工具Selenium,今天讲解单元测试工具JUnit JUnit JUnit的使用 JUnit注解 BeforeAll和AfterAll注解 BeforeEach和AfterEach注解 参数化 方法获取参数(动态参数) 断言 用例执行顺序 测…

MATLAB优化模型(3)

一、前言 在MATLAB中处理各种优化问题,如背包问题、指派问题(也称为分配问题)、抽屉原理应用、旅行商问题(TSP)以及排队论模型,通常需要结合MATLAB的优化工具箱(如Optimization Toolbox&#xf…

MTK Android12 分析system_app允许vendor_mtk_audiohal_prop SELinux 权限问题

本文将尝试分析,在开发 Android 12 MTK 平台时遇到了 vendor_mtk_audiohal_prop 属性相关的 SELinux 权限问题。包括如何修改 SELinux 策略以允许 system_app 设置 vendor_mtk_audiohal_prop 属性。 问题描述 希望允许 system_app 设置 vendor_mtk_audiohal_prop 属…

C# Unity 面向对象补全计划 之 初识继承方法与多态

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝 1.继承方法 C# & Unity 面向对象补全计划 之 继承(字段与属性&…

如何在立创EDA的PCB电路板导入logo图案

1、首先制作好logo图案,一般为公司logo图标,如下图 2、打开立创EDA的PCB文件,如下图 3、将PCB的图层切换到丝印层: 4、然后选择EDA菜单栏的放置---图片: 5、进入后点击选择图片,将logo图片导入,…

Depth Anything——强大的单目深度估计模型

概述 单目深度估计(Monocular Depth Estimation, MDE)是一项在计算机视觉领域中非常重要的技术,它旨在从单张图像中恢复出场景的三维结构。这项技术对于机器人导航、自动驾驶汽车、增强现实(AR)和虚拟现实&#xff08…

在vscode中远程连接linux进行开发

目录 引言 配置过程 1.本机安装OpenSSH 2.本机生成RSA公钥和私钥 3.将rsa公钥添加到远程linux的authorized_keys文件中 4.vscode安装Remote - SSH插件 5.在vscode中ssh连接服务器 6.在本地vscode操作远程linux文件进行开发 7.在vscode上给远程linux机器需安装插件 常…

设计模式 之 —— 抽象工厂模式

目录 什么是抽象工厂模式? 定义 特点 抽象工厂模式(java代码示例) 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…

[Meachines] [Easy] Sense PFSense防火墙RCE

信息收集 IP AddressOpening Ports10.10.10.60TCP:80,443 $ nmap -p- 10.10.10.60 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http lighttpd 1.4.35 |_http-title: Did not follow redirect to https://10.10.10.60/ |_http-server-header…