CNN——卷积神经网络

文章目录

  • 多层感知机(MLP,Multilayer Perceptron)
  • 神经网络定义
  • MLP与神经网络的异同
    • 相同之处:
    • 不同之处:
    • 总结
  • 为什么要使用神经网络
  • CNN
    • 卷积层:
    • 池化层:
    • 全连接层:
  • 卷积神经网络的优势
  • padding的作用

多层感知机(MLP,Multilayer Perceptron)

MLP是一种基于前馈神经网络(Feedforward Neural Network)的深度学习模型,由多个神经元层组成,其中每个神经元层与前一层全连接。多层感知机可以用于解决分类、回归和聚类等各种机器学习问题。
MLP也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:

神经网络定义

神经网络(Neural Network)是一种受到生物神经系统启发的计算模型,用于模拟和解决各种机器学习和人工智能任务。它由多个互连的节点(或神经元)层次结构组成,每一层都包含多个神经元,这些神经元之间通过带有权重的连接相互链接。神经网络的核心思想是通过学习这些权重来执行复杂的任务,例如分类、回归、图像识别、自然语言处理和控制等

结构:神经网络通常包括输入层、隐藏层(可以有多层)和输出层。每一层都由多个神经元组成,它们之间通过连接进行信息传递。

权重:权重是每个连接的参数,决定了信号如何在网络中传播。通过训练,神经网络会自动调整这些权重以适应特定任务。

激活函数:激活函数用于引入非线性性质,使神经网络能够学习复杂的函数。常见的激活函数包括Sigmoid、ReLU(Rectified Linear Unit)和Tanh等。

前向传播:在前向传播过程中,输入数据从输入层流向输出层,通过层与层之间的权重和激活函数的组合来生成预测结果。

反向传播:反向传播是神经网络的训练过程,它使用损失函数来计算预测与实际值之间的误差,然后通过链式法则来更新权重,以减小误差。

MLP与神经网络的异同

相同之处:

MLP是神经网络的一种,它们都由神经元和层组成,可以用于各种机器学习任务。它们都使用激活函数来处理输入数据。

不同之处:

MLP是神经网络的一个子集,而神经网络是一个更广泛的概念,可以包括各种不同类型的结构,如卷积神经网络(CNN)和循环神经网络(RNN)。MLP通常是前馈的,而神经网络可以包括循环连接和卷积结构,适用于不同类型的数据和任务。

总结

多层感知机是神经网络的一种特定形式,用于监督学习任务,而神经网络是一个更通用的术语,包括多种不同类型的网络结构

为什么要使用神经网络

自动特征提取:神经网络能够自动学习特征,不需要手动提取特征,这有助于简化问题的处理
在机器学习中进行分类任务,我们首先就需要明确特征标签,而特征数目的选取将决定模型的好坏,征数目过少,欠拟合,如果特征数目过多,过拟合,意味着我们需要花费大量时间精力在特征工程上

适用性广泛:神经网络在各种领域中都表现出色,包括图像识别、语音识别、自然语言处理、推荐系统、控制系统等。它们可以用于解决多种复杂的问题。

非线性建模:神经网络通过激活函数引入非线性,可以处理复杂的非线性关系,这在许多现实世界问题中非常重要。

可扩展性:神经网络可以根据任务的复杂性进行扩展,可以构建深度神经网络(深度学习)来解决更复杂的问题。

泛化能力:当经过训练后,神经网络通常能够很好地泛化到之前未见过的数据,这是因为它们具有适应新数据的能力

CNN

卷积神经网络(Convolutional Neural Network,CNN)是传统神经网络的一个改进,它包括三个基本层

卷积层:

CNN的核心是卷积层,这些层使用卷积操作来提取图像中的特征。卷积操作通过滑动一个小的滤波器(卷积核)在输入图像上,将局部区域与滤波器进行卷积操作,从而捕捉特定特征,例如边缘、纹理等。
img
卷积可以理解为一种类似于加权运算的操作

在进行卷积操作之前,需要定义一个过滤器(卷积核),其中的每一格都有一个权重值。

卷积的过程是将每个格子中的权重值与图片对应的像素值相乘并累加,所得到的值就是特征图FeatureMap(经过卷积运算后的神经元集合)中的一个值。

注意:

  • 卷积核的通道数与输入数据的通道数相同
  • 卷积核的个数与输出的通道数相同

池化层:

在卷积层之后,通常会添加池化层。池化层通过取局部区域的最大值或平均值来降低特征图的维度,从而减小计算复杂度并提取最重要的信息。

全连接层:

在卷积和池化层之后,通常有一个或多个全连接层,用于将提取的特征映射到最终的分类或回归结果

CNN通过“局部连接”和“参数共享”可以更高效地完成图像识别任务

局部连接:每个神经元不再和上一层的所有神经元连接,而只和上一层相邻的局部区域内的神经元连接。
参数共享:在卷积的过程中,一个卷积核内的参数是共享的

卷积神经网络的优势

特征学习:CNN 能够自动学习图像的特征,无需手动提取特征。这使得它们非常适合图像处理任务,如图像分类、物体检测和图像分割。

平移不变性:CNN 使用卷积操作来捕获局部特征,具有平移不变性。这意味着模型能够识别相同特征的不同实例,无论它们在图像中的位置如何。

参数共享:卷积层中的参数共享使得网络更加高效,减少了需要训练的参数数量,降低了过拟合的风险。

适用性广泛:CNN 不仅仅适用于图像处理,还可用于其他网格结构数据的处理,如文本分类和音频识别。

深度学习:CNN 可以扩展为深度卷积神经网络,即深度学习模型,可以处理更复杂的问题,并在大规模数据上取得显著的性能提升。

padding的作用

由于过滤器(卷积核)在移动到边缘的时候就结束了,中间的像素点比边缘的像素点参与计算的次数要多。因此越是边缘的点,对输出的影响就越小,我们就有可能丢失边缘信息。

为了解决这个问题,可以进行填充(padding),即在图片外围补充一些像素点,并将这些像素点的值初始化为0。

特征图尺度计算与参数共享:
(输入尺寸+2*填充尺寸-卷积核大小)/ 移动步长 + 1

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

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

相关文章

Python---while循环的执行流程 解释

使用Debug调试工具&#xff0c;查看while循环的运行流程 代码 # ① 初始化计数器 i 1 # ② 编写循环条件&#xff08;判断计数器是否达到了100&#xff09; while i < 100:print(f{i 1}、老婆大人&#xff0c;我错了)# ③ 在循环体内部更新计数器i 1 ① 代码都是顺序执行…

基于LSTM的天气预测 - 时间序列预测 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 机器学习大数据分析项目 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/po…

如何为 Elasticsearch 创建自定义连接器

了解如何为 Elasticsearch 创建自定义连接器以简化数据摄取过程。 作者&#xff1a;JEDR BLASZYK Elasticsearch 拥有一个摄取工具库&#xff0c;可以从多个来源获取数据。 但是&#xff0c;有时你的数据源可能与 Elastic 现有的提取工具不兼容。 在这种情况下&#xff0c;你可…

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--作业

0. 内容 1. T1 1. 下载EuRoc数据集&#xff08;optional&#xff09; 因为作业主要使用Ch2生成的数据&#xff0c;所以这一步也是可选的&#xff0c;但是为了整个系统的bring up&#xff0c;可以先用EuRoc数据集跑起来。 下载EuRoc数据集&#xff0c;SLAM相关数据集链接 2.…

【LeetCode刷题(数据结构与算法)】:数据结构中的常用排序实现数组的升序排列

现在我先将各大排序的动图和思路以及代码呈现给大家 插入排序 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a; 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止&#xff0c;得到一个…

c语言练习91:合并两个有序链表

合并两个有序链表 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码1&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct Li…

Appium+python+unittest搭建UI自动化框架!

阅读本小节&#xff0c;需要读者具备如下前提条件&#xff1a; 1. 掌握一种编程语言基础&#xff0c;如java、python等。 2. 掌握一种单元测试框架&#xff0c;如java语言的testng框架、python的unittest框架。 3. 掌握目前主流的UI测试框架&#xff0c;移动端APP测试框架Appiu…

应用3之Like运算符的应用

《VBA经典应用69例》&#xff08;10178981&#xff09;&#xff0c;是我推出的第九套教程&#xff0c;教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开&#xff0c;这套教程案例众多&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以便大家…

医药电商行业想要精准获客?媒介盒子分享三大技巧

随着医疗需求的不断增长&#xff0c;健康成为社会关注的重点&#xff0c;消费者对医药保健产品和需求正在不断增长&#xff0c;数字化时代的来临使医药行业逐渐电商化&#xff0c;线上零售渠道成为医药行业销售额的主要来源&#xff0c;那当下医药电商行业如何抓住机遇&#xf…

AB试验(六)A/B实验常见知识点的Python计算

AB试验&#xff08;六&#xff09;A/B实验常见知识点的Python计算 前面理论知识上提到了很多的知识点需要计算&#xff0c;作为一个实用主义的博主&#xff0c;怎么可以忍受空谈呢&#xff1f;所以本期就给大家分享如何利用Python对这些知识点进行计算。 均值类指标 import …

一起学数据结构(11)——快速排序及其优化

上篇文章中&#xff0c;解释了插入排序、希尔排序、冒泡排序、堆排序及选择排序的原理及具体代码实现本片文章将针对快速排序&#xff0c;快速排序的几种优化方法、快速排序的非递归进行解释。 目录 1. 快速排序原理解析以及代码实现&#xff1a; 2. 如何保证相遇位置的值一…

嵌入式硬件库的基本操作方式与分析

本次要介绍的开源软件是 c-periphery&#xff1a; https://github.com/vsergeev/c-periphery一个用 C 语言编写的硬件外设访问库。 我们可以用它来读写 Serial、SPI、I2C 等&#xff0c;非常适合在嵌入式产品上使用。 我们可以基于它优秀的代码框架&#xff0c;不断地扩展出更…

Prometheus接入AlterManager配置邮件告警(基于K8S环境部署)

文章目录 一、配置AlterManager告警发送至邮箱二、Prometheus接入AlterManager配置三、部署PrometheusAlterManager(放到一个Pod中)四、测试告警 注意&#xff1a;请基于 PrometheusGrafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 一、配置AlterManager告警发送至邮…

C++——特殊类设计

目录 一.不能被拷贝的类 1.C98做法 2.C11做法 二.只能在堆上实例化的类 1.实现方式一 2.实现方式二 三.只能在栈上创建的对象 四.不能被继承的类 1.C98方式 2.C11方式 五.只能创建一个对象的类 1.设计模式 2.单例模式 一.不能被拷贝的类 拷贝只会放在两个场景中&a…

visual studio Qt 开发环境中手动添加 Q_OBJECT 导致编译时出错的问题

问题简述 创建项目的时候&#xff0c;已经添加了类文件&#xff0c;前期认为不需要信号槽&#xff0c;就没有添加宏Q_OBJECT,后面项目需要&#xff0c;又加入了宏Q_OBJECT&#xff0c;但是发现只是添加了一个宏Q_OBJECT&#xff0c;除此之外没有改动其它的代码&#xff0c;原本…

基于springboot实现地方废物回收机构平台管理系统【项目源码+论文说明】

基于springboot实现地方废物回收机构管理系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把地方废物回收机构管理与现在网络相结合&#xff0c;利用java技术建设地方废物回收机构管理系统&#xff0c;实现地方废物回收机构的信息化。则对于进一步提高地方废物回收机…

如何提高广告投放转化率?Share Creators 资产库与Appsflyer营销数据的全面结合

如何提高广告投放转化率&#xff1f;Share Creators 资产库与Appsflyer营销数据的全面结合 全球经济进入了低迷期。 营销成本越来越高&#xff0c; 营销需要更务实&#xff0c;注重投入产出比。众所周知&#xff0c;除了渠道、客群画像以外&#xff0c; 优秀的广告设计图&#…

c进阶测试题

选择题 1.请问该程序的输出是多少&#xff08;C&#xff09; #include<stdio.h> int main(){unsigned char i 7;int j 0;for(;i > 0;i - 3){ j;} printf("%d\n", j);return 0; }A. 2 B. 死循环 C. 173 D. 172 首先unsigned char型是不会为负数&#xff…

flask入门(四)前后端数据传输

文章目录 1、flask后端接收来自前端的数据1&#xff09;如果前端提交的方法为POST2&#xff09;如果前段提交的方法是GET 2、flask后端向前端传数据3、案例参考文献 1、flask后端接收来自前端的数据 1&#xff09;如果前端提交的方法为POST 后端接收时的代码&#xff1a; xx…

我试图扯掉这条 SQL 的底裤。只能扯一点点,不能扯多了

之前不是写分页嘛,分页肯定就要说到 limit 关键字嘛。 然后我啪的一下扔了一个链接出来: https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html 这个链接就是 MySQL 官方文档,这一章节叫做“对 Limit 查询的优化”,针对 limit 和 order by 组合的场景进行了较…