当前位置: 首页 > news >正文

卷积神经网络基础

文章目录

  • 前言
  • 一、卷积神经网络CNN(Convolutional Neural Network)
  • 二、BP神经网络
  • 三、实例:利用BP神经网络做车牌数字识别
  • 四、卷积层
  • 五、池化层


前言

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。来源于哔哩哔哩博主“霹雳吧啦Wz”,博主学习作为笔记记录,欢迎大家一起讨论学习交流。

LeCun LeNet

一、卷积神经网络CNN(Convolutional Neural Network)

CNN(Convolutional Neural Network)它的雏形是1998年LeCun的LeNet网络结构,卷积神经网络发展历程中的第一个卷积神经网络。

可以理解为只要包含了卷基层的神经网络卷积神经网络

二、BP神经网络

在这里插入图片描述
x1,x2,x3是这个神经元的三个激励,w1,w2,w3是这三个激励对应的权重,-1是这个神经元的偏置。

如果将神经元按列进行排列,列与列之间进行全连接,就得到一个BP神经网络。

在这里插入图片描述
左到右的正向传播过程中能够得到一个输出值,将这个输出值和所期望的输出值进行对比就能得到一个误差值

通过计算每个节点的偏导数就能够计算得到每个节点的误差梯度

得到的损失值反向应用到损失梯度上,就达到了误差的反向传播过程

三、实例:利用BP神经网络做车牌数字识别

在这里插入图片描述

1、首先读入一张彩色的RGB图像,每一个像素里面都包含3个值(RGB分量)
在这里插入图片描述

首先将它进行灰度化,每个像素值就只剩下一个分量了;再进行二值化处理,得到一个黑白图像

2、用一个5行3列的滑动窗口二值化后的黑白图像上进行滑动,每滑动到一个地方就计算这个滑动窗口中白色的像素占整个滑动窗口所覆盖的像素比例
在这里插入图片描述

当滑动窗口滑动到到最右边的时候,此时列数不够了,可以进行补零处理也可以进行一个判断,当滑动窗口快越界的时候就暂时把它变成一个5行2列的滑动窗口;通过这个方法遍历整个图像就得到一个5*5的矩阵

3、将所得到的5*5的矩阵按行进行展开,并将其拼接成一个行向量(1行25列),这样就可以把这个行向量当成输入神经网络的输入层
在这里插入图片描述

4、输入层有了之后,再看输出层one-hot编码是常用的对标签进行编码的方式
上图展示了0-9每个数字对应的one-hot编码,没有重复。
在这里插入图片描述

5、有了输入和输出之后,就可以对神经网络进行训练了。在实际训练过程中,可以将输入层的输入节点数设为25,将输出层的输出节点数设为10,中间的隐藏层按实际情况进行设置
在这里插入图片描述

四、卷积层

在这里插入图片描述
卷积层是卷积神经网路中独特的网络结构:

卷积:一个滑动窗口在特征图上进行滑动,并计算(将卷积核上的值特征图上的值对应相乘再进行相加,就得到最后矩阵中的一个值,每滑动一步计算一个值,最终得到卷积结果)。

卷积的目的就是为了进行图像的特征提取

卷积的特性:
1.拥有局部感知机制以滑动窗口的形式在特征图上进行滑动计算,所以具有局部感知能力。
2.权值共享:滑动过程中,卷积核的值不会发生变化,所以又具有权值共享的特性。
权值共享的优势(对比BP神经网络):在这里插入图片描述
这里的参数指的是神经元的权重;
权值的共享使得卷积神经网络的参数个数大幅度减少。
在这里插入图片描述
实际应用过程中往往是对多维的特征矩阵进行卷积操作

卷积核的深度要和输入特征矩阵一致这里的深度指的是channel,即通道数),都是三维的,最终卷积得到的矩阵是由三通道的输入特征矩阵三通道的卷积核分别对应卷积,再对应相加后得到一个卷积矩阵
在这里插入图片描述

总结:
1、卷积核的channel与输入特征层的channel相同(都是三通道)
2、输出的特征矩阵channel与卷积核的个数相同(通过卷积核1和卷积核2最终得到一个两通道的输出特征矩阵)
在这里插入图片描述
偏移量就正常加进去即可。

Relu激活函数实际上是将负值全部过滤掉,只保留了正值不变,在实际应用中使用较多;
在反向传播误差的过程中,如果使用sigmoid激活函数导数的求解非常麻烦;
如果使用Relu激活函数,权重如果进入失活状态后无法被再次激活,所以在训练的过程中,建议不要一开始就使用特别大的学习率进行学习,否则很容易导致大量神经元失活。

在这里插入图片描述
在这里插入图片描述
一般强况下,可以使用padding的方式在图像的周围直接补零进行处理,补零后就能够正常地进行卷积,而不会出现越界的情况了。
padding的像素p:一般实际应用过程中是两边同时补零,即左右上下进行对称的:补零操作上图中只补了一边,所以只用加上一个p就够了N = ( 4 - 3 + 1 )/ 2 + 1 = 2 ,所以最后得到一个2*2的特征矩阵。

五、池化层

在这里插入图片描述
池化层的目的就是对特征图进行稀疏处理,减少数据运算量

maxpooling下采样:寻找池化核对应范围内的最大值来进行最大下采样操作

在这里插入图片描述
averagepooling下采样层:寻找池化核对应范围内的平均值来进行平均下采样操作。

池化层的特点
1、没有训练参数,只是在原始的特征图上进行求最大值或者平均值的操作
2、它只会改变特征矩阵的宽度(w)和高度(h),并不会改变深度(channel)
3、一般池化核的大小(poolsize)和步长(stride)相同,可以将特征图进行一定比例的缩小,计算更加方便(这只是一般情况下,但并不绝对)

相关文章:

  • PCIe系列专题之二:2.1 TLP的前世今生
  • 【面经】HTTP篇
  • web自动化测试(selenium.webdriver)
  • grpc和protobuf在一起
  • 1. HelmTemplate 3分钟将项目打包成Helm Chart并部署至k8s
  • 【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件的变量
  • Redis 备份恢复(持久化)手册
  • 【Linux】01-Linux系统CentOS7虚拟机VMware安装保姆级教程
  • Go语言各种扩容机制(防止混淆)
  • Pytorch深度学习——线性回归实现 04(未完)
  • 虚拟内存、锁页内存、内存分页、分段、段页式内存管理(超详细)
  • 【BOOST C++】教程4:常量和宏
  • 不可以涩涩!AI续写软件初体验;迁移学习路线图;谷歌新闻非官方搜索API;CS295『因果推理』2021课程资料;前沿论文 | ShowMeAI资讯日报
  • 高项_第十四章信息文档管理与配置管理
  • 07 nginx 的 worker process 的调试
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • Angular6错误 Service: No provider for Renderer2
  • create-react-app项目添加less配置
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Laravel Mix运行时关于es2015报错解决方案
  • Mocha测试初探
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • PHP 小技巧
  • ubuntu 下nginx安装 并支持https协议
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue--为什么data属性必须是一个函数
  • vue总结
  • webpack入门学习手记(二)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 规范化安全开发 KOA 手脚架
  • - 转 Ext2.0 form使用实例
  • 如何在招聘中考核.NET架构师
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (20050108)又读《平凡的世界》
  • (Python第六天)文件处理
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (三分钟)速览传统边缘检测算子
  • (四)图像的%2线性拉伸
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)程序员技术练级攻略
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .aanva
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .Net多线程总结
  • .NET委托:一个关于C#的睡前故事
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @31省区市高考时间表来了,祝考试成功
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [Android]创建TabBar
  • [Apio2012]dispatching 左偏树
  • [CCIE历程]CCIE # 20604