深度学习——卷积神经网络(convolutional neural network)CNN详解(一)——概述. 步骤清晰0基础可看

在CNN的学习过程中我会提供相应的手算例子帮助理解训练过程。

其他关于神经网络的学习链接如下:

一、了解卷积神经网络

卷积神经网络的作用

总的来说,卷积神经网络的第一个主要作用是对图像进行特征提取,所谓特征提取,就是明白图像的那部分重要,哪部分不重要,然后我们就得到了一个能够识别图像的机器。当我们输入其他的图像,这个机器可以对新输入的图像进行判断,也就是进行相应的任务(分类,目标检测)。

比如,假如我用人眼分辨不出猫和狗,需要机器来帮我。当然,我们能分清猫狗,但是当有更复杂的图像处理任务时,就需要机器帮忙分辨。

一般的CNN训练过程会用到两个数据集。第一个是训练集(Train set),一个是测试集(Test set)

1.训练过程

训练集里面猫狗都有,并且有正确的标签,所谓的标签就是这个训练集里面的每一张图片都有正确的分类。比如我们用0代替猫,用1来代替狗,训练集里面的每张图都有对应的0,1值。我们将训练集里面的每张图输入到CNN中去训练,让这个机器知道猫狗的不同特征,让它能够判断什么是猫,什么是狗。

我们的目的是优化CNN模型,让CNN模型具有分类猫狗的能力。所有对于无论什么优化任务,我们需要有目标函数,CNN里常用的损失函数叫做交叉熵损失函数,我们的目的是让分类损失最小。其实归根到底,就是数学中的最优化问题,找到最优解。这些内容我会在稍后的章节中一一说明,本章的学习任务是理解CNN的运作过程。
 

训练过程可以分解为前向传播(Forward Propagation)和反向传播(Backpropagation),以下的解释以分类猫狗为例

(1)前向传播

  • 目的: 前向传播旨在从输入的图像数据中提取特征,并预测图像是属于“猫”还是“狗”。
  • 作用: 通过前向传播,CNN能够识别图像中的纹理、形状和模式等特征,为分类提供依据。

过程:

  1. 输入层: 输入待分类的图像(例如,一个灰度或彩色图像)。
  2. 卷积层: 图像通过一个或多个卷积层,这些层使用不同的卷积核(或滤波器)来提取图像的局部特征,如边缘、纹理等。
  3. 激活函数: 通常在卷积层之后应用ReLU激活函数,引入非线性,帮助网络学习更复杂的特征表示。
  4. 池化层(可选): 使用最大池化或平均池化来降低特征图的空间尺寸,减少参数数量,提取主要特征。
  5. 全连接层: 卷积层和池化层的输出被展平并通过一个或多个全连接层,这些层将学习到的特征映射到最终的分类结果。
  6. 输出层: 最后,通过一个具有两个输出单元的全连接层(对应于两个类别:“猫”和“狗”),通常使用Softmax激活函数来计算每个类别的概率。

(2)反向传播

  • 目的: 反向传播用于调整网络的权重和偏置,以最小化预测输出和实际标签之间的差异。
  • 作用: 通过反向传播,网络能够根据分类误差自我修正,提高分类准确性。

过程:

  1. 损失函数计算: 计算输出层的预测概率和实际标签(“猫”或“狗”)之间的误差,通常使用交叉熵损失。
  2. 梯度计算: 利用链式法则计算损失相对于网络中每个参数的梯度,从输出层逆向传递至输入层。
  3. 权重更新: 根据计算得到的梯度和预设的学习率,更新网络中的权重和偏置,以减少未来的预测误差。
  4. 迭代优化: 通过多次迭代前向传播和反向传播,不断优化网络参数,直到模型在猫狗分类任务上达到较高的准确率。

2.测试过程

训练完之后,我们将测试集里面的图片输进去,CNN就能给出一个预测值了,是猫或者狗,当然,也有可能预测错误。这个过程叫测试,测试能让我们知道我们训练的CNN模型到底好不好。

什么时候训练完,达到什么状态可以停止这个CNN模型的训练,这些内容在之后的章节中都会一一解释。

预测的正确率可以让我们判断不同CNN的性能好坏。比如一个CNN能将输进去的图全部预测正确,那性能就非常强了。顺带一提,输入到CNN模型的测试集里面的所有图片是不带标签的,但是我们为了了解CNN的性能,也就是为了知道它到底预测得对不对,在训练完之后的评估阶段,会用带标签的测试集评估,我们有一系列的指标评估模型性能,这些指标稍后得章节里面会提到。

3.标签问题

但是当我们用CNN实战应用的时候,比如依靠病人的肺部X光判断他有没有得肺炎,我们肯定是不知道正确答案的。所以训练一个性能强大的CNN是非常重要的,这有助于我们之后的实战应用。当人脑不足以做出判断时,机器会加以辅助。就按这个例子来说,一个已经过测试性能优秀的CNN来判断肺炎与否,当医生用自己的专业知识对这个病人的诊断结果不太确定时,机器的预测结果可以辅助医生进行诊断。这就是CNN强大的应用价值。

总结卷积神经网络其主要作用包括:

  • 特征提取:CNN能够自动从输入数据中提取特征,特别适用于图像的边缘、纹理、颜色等特征的提取。
  • 图像分类:CNN在图像分类任务中表现出色,被广泛用于对象识别和图像分类任务中。
  • 目标检测:用于检测图像中的物体并定位它们。
  • 图像生成:CNN还可以用于生成新的图像,例如通过生成对抗网络(GANs)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7.6第三天作业

一、在数据库中创建一个表student,用于存储学生信息 CREATE TABLE student( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, grade FLOAT ); (1.)先创建一个数据库 (2.)创建student表 查看是否创建成功 1、向studen…

QT c++函数模板与类模板的使用

QT c类模板的使用 #pragma once#include <QtWidgets/QMainWindow> #include "ui_QtWidgetsApplication5.h"class QtWidgetsApplication5 : public QMainWindow {Q_OBJECTpublic:QtWidgetsApplication5(QWidget *parent nullptr);~QtWidgetsApplication5();te…

代码随想录算法训练营第13天|二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代法、102.二叉树的层序遍历

打卡Day13 1.理论基础2.二叉树的递归遍历3.二叉树的迭代遍历3.二叉树的统一迭代法4.102.二叉树的层序遍历扩展107. 二叉树的层序遍历 II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117. 填充每个…

嵌入式C语言面试相关知识——关键字(不定期更新)

嵌入式C语言面试相关知识——关键字 一、博客声明二、C语言关键字1、sizeof关键字2、static关键字3、const关键字4、volatile关键字5、extern关键字 一、博客声明 又是一年一度的秋招&#xff0c;怎么能只刷笔试题目呢&#xff0c;面试题目也得看&#xff0c;想当好厂的牛马其实…

数据可视化之智慧城市的脉动与洞察

在数字化转型的浪潮中,城市作为社会经济发展的核心单元,正经历着前所未有的变革。城市数据可视化大屏看板作为这一变革中的重要工具,不仅极大地提升了城市管理效率,还为公众提供了直观、全面的城市运行状态视图,成为智慧城市建设不可或缺的一部分。本文将深入探讨以“城市…

一文理解 Treelite,Treelite 为决策树集成模型的部署和推理提供了高效、灵活的解决方案

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、什么是 Treelite&#xff1f; Treelite 是一个专门用于将决策树集成模型高效部署到生产环境中的机器学习模型编译器&#xff0c;特别适合处理大批量数据的推理任务&#xff0c;能够显著提升推理性能…

Java之网络面试经典题(一)

目录 ​编辑 一.Session和cookie Cookie Session 二.HTTP和HTTPS的区别 三.浅谈HTTPS为什么是安全的&#xff1f; 四.TCP和UDP 五.GET和Post的区别 六.forward 和 redirect 的区别&#xff1f; 本专栏全是博主自己收集的面试题&#xff0c;仅可参考&#xff0c;不能相…

嵌入式Linux系统编程 — 7.2 进程的环境变量

目录 1 什么是进程的环境变量 2 环境变量的作用 3 应用程序中获取环境变量 3.1 environ全局变量 3.2 获取指定环境变量 getenv 4 添加/删除/修改环境变量 4.1 putenv()函数添加环境变量 4.2 setenv()函数 4.3 unsetenv()函数 1 什么是进程的环境变量 每一个进程都有一…

Android - Json/Gson

Json数据解析 json对象&#xff1a;花括号开头和结尾&#xff0c;中间是键值对形式————”属性”:属性值”” json数组&#xff1a;中括号里放置 json 数组&#xff0c;里面是多个json对象或者数字等 JSONObject 利用 JSONObject 解析 1.创建 JSONObject 对象&#xff0c;传…

快手大模型首次集体亮相,用AI重塑内容与商业生态

7月6日&#xff0c;在2024世界人工智能大会期间&#xff0c;快手举办了以“新AI新应用新生态”为主题的大模型论坛&#xff0c;会上&#xff0c;快手大模型首次集体亮相&#xff0c;视频生成大模型可灵、图像生成大模型可图等产品的多项新功能正式发布。 继图生视频、视频续写…

Appium启动APP时报错Security exception: Permission Denial

报错内容Security exception: Permission Denial: starting Intent 直接通过am命令尝试也是同样的报错 查阅资料了解到&#xff1a;android:exported | App quality | Android Developers exported属性默认false&#xff0c;所以android:exported"false"修改为t…

QT学习积累——如何提高Qt遍历list的效率

目录 引出Qt遍历list提高效率显示函数的调用使用&与不使用&除法的一个坑 总结自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 引出 QT学习积累——如何提高Qt遍历list…

Springboot学习之用EasyExcel4导入导出数据(基于MyBatisPlus)

一、POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…

Kotlin中的数据类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

使用WinSCP工具连接Windows电脑与Ubuntu虚拟机实现文件共享传输

一。环境配置 1.首先你的Windows电脑上安装了VMware虚拟机&#xff0c;虚拟机装有Ubuntu系统&#xff1b; 2.在你的windows电脑安装了WinSCP工具&#xff1b; 3.打开WinSCP工具默认是这样 二。设置WinSCP连接 打开WinSCP&#xff0c;点击新标签页&#xff0c;进入到如下图的…

Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制

这里写目录标题 0. 机器人配置1. Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制1.1 TurtleBot3 Waffle Pi端配置1.2 PC端配置1.2.1 安装turtlebot3的环境配置1.2.2 创建项目并安装Turtlebot31.2.3 配置环境变量 1.3 PC端与TurtleBot3进行通信1.3.1 PC端与机器人端互PING和SSH连…

用C#调用Windows API向指定窗口发送按键消息详解与示例

文章目录 1. 按键消息的定义及功能2. 引入所需的命名空间3. 定义Windows API函数4. 定义发送消息的方法5. 获取窗口句柄6. 调用API发送按键消息7. 使用示例注意事项总结 在C#中调用Windows API向指定窗口发送按键消息是一种常见的操作&#xff0c;这通常用于自动化脚本、游戏辅…

加密货币大利好!9月降息概率突破70%!美国可能大幅降息或多次降息?

根据最新消息&#xff0c;美国9月降息的概率已经突破70%&#xff0c;这对加密货币市场来说是个利好消息。与此同时&#xff0c;美国经济表现疲软&#xff0c;可能会陷入衰退&#xff0c;联邦储备系统(Fed)接下来会不会果断采取大幅降息措施备受关注。 美国劳工统计局7月5日公布…

前端面试项目细节重难点(十)(已工作|做分享)

面试官&#xff1a;现场出需求&#xff1a;我想让一个左侧盒子可以进行拉伸、缩小、展示或隐藏这些功能&#xff0c;你会如何实现&#xff1f; 答&#xff1a;&#xff08;1&#xff09;分析问题&#xff1a;其实&#xff0c;我听到这个问题后&#xff1a; 我的第一种想法&am…

E1.【C语言】练习:用函数求两个整数的较大值

有关创建函数见&#xff1a; 12.【C语言】创建函数 写法 1&#xff1a;if语句 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int max(int a, int b) {if (a > b)return a;elsereturn b; } int main() {int a 0;int b 0;scanf("%d%d", &a,…