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

深度学习模型:卷积神经网络(CNN)

一、前言

CNN 的发展历程可以追溯到 20 世纪 80 年代和 90 年代。受生物视觉系统的启发,研究人员开始探索如何构建专门用于处理图像数据的神经网络。早期的一些研究奠定了基础,例如 Fukushima 提出的 Neocognitron 模型。 随着时间的推移,到了 21 世纪初,LeCun 等人提出了 LeNet-5,这是一个具有里程碑意义的 CNN 架构,成功应用于手写数字识别任务,为 CNN 在图像识别领域的广泛应用开启了大门。

二、CNN 的原理

(一)卷积层

卷积层是 CNN 的核心组件之一。它通过卷积核(滤波器)在图像上滑动,对局部区域进行特征提取。卷积核就像是一个小的特征探测器,不同的卷积核可以检测到图像中的不同特征,如边缘、纹理等。 例如,一个 3x3 的卷积核在图像上逐像素滑动,与对应区域的像素值进行加权求和,得到新的特征图。通过使用多个卷积核,可以提取出多维度的图像特征。

(二)池化层

池化层的主要作用是对特征图进行降维,减少计算量和参数数量,同时保留重要的特征信息。常见的池化操作有最大池化和平均池化。最大池化会在池化窗口内选取最大值作为输出,而平均池化则计算窗口内的平均值。池化操作可以逐步缩小特征图的尺寸,使网络能够关注到更宏观的特征。

(三)全连接层

在经过多个卷积层和池化层后,通常会连接全连接层。全连接层将前面提取到的特征进行整合,通过神经元之间的全连接关系进行分类或回归等任务的处理。例如,在图像分类任务中,全连接层根据学习到的特征模式判断图像属于哪一个类别。

(四)激活函数

与普通神经网络类似,CNN 中也使用激活函数来引入非线性因素。常用的激活函数如 ReLU(Rectified Linear Unit),它在输入大于 0 时输出输入值,小于 0 时输出 0。ReLU 函数能够加速网络的训练,并且有效缓解梯度消失问题。

三、CNN 的实现

(一)选择深度学习框架

目前有许多强大的深度学习框架可供选择,如 TensorFlow、PyTorch 等。这些框架提供了丰富的函数和工具,方便我们构建 CNN 模型。以 TensorFlow 为例,它具有高效的计算图构建和执行能力,适合大规模的深度学习任务。

(二)数据准备

对于图像数据,首先需要进行数据预处理。这包括图像的读取、裁剪、缩放、归一化等操作。例如,将图像统一调整为相同的大小,将像素值归一化到 0 到 1 之间,同时划分训练集、验证集和测试集。

(三)构建模型

在 TensorFlow 中,可以使用 Keras 模块快速构建 CNN 模型。首先定义输入层,指定输入图像的形状。然后添加卷积层,设置卷积核的大小、数量和激活函数等参数。接着添加池化层,选择合适的池化方式和池化窗口大小。之后可以重复添加卷积层和池化层以提取更复杂的特征。最后添加全连接层,并设置输出层的神经元数量和激活函数,用于最终的分类或回归任务。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense# 构建模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))  # 第一个卷积层
model.add(MaxPooling2D((2, 2)))  # 第一个池化层
model.add(Conv2D(64, (3, 3), activation='relu'))  # 第二个卷积层
model.add(MaxPooling2D((2, 2)))  # 第二个池化层
model.add(Flatten())  # 展平层,将多维特征图转换为一维向量
model.add(Dense(128, activation='relu'))  # 全连接层
model.add(Dense(10, activation='softmax'))  # 输出层,用于 10 分类任务

(四)模型训练

构建好模型后,需要选择合适的损失函数(如交叉熵损失函数用于分类任务)和优化器(如 Adam 优化器),然后使用训练数据对模型进行训练。在训练过程中,可以设置训练的轮数、批次大小等参数,并通过回调函数监控训练过程中的损失值和准确率等指标。

# 编译模型
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32,validation_data=(x_val, y_val))

(五)模型评估与应用

训练完成后,使用测试集对模型进行评估,计算模型的准确率、召回率等指标,以评估模型的性能。如果模型性能满足要求,就可以将其应用于实际的图像识别或处理任务中,例如对新的图像进行分类预测。

# 评估模型
loss, accuracy = model.evaluate(x_test, y_test)# 预测
predictions = model.predict(x_new_images)

相关文章:

深度学习模型:卷积神经网络(CNN)

一、前言 CNN 的发展历程可以追溯到 20 世纪 80 年代和 90 年代。受生物视觉系统的启发,研究人员开始探索如何构建专门用于处理图像数据的神经网络。早期的一些研究奠定了基础,例如 Fukushima 提出的 Neocognitron 模型。 随着时间的推移,到…...

Flask 自定义路由转换器

步骤 创建自定义转换器类 继承 werkzeug.routing.BaseConverter。实现 to_python 和(可选)to_url 方法。 将转换器注册到 Flask 应用 在路由中使用转换器 示例 创建转换器 假设需要自定义一个转换器 FourDigitYearConverter,用于匹配四位年…...

【淘汰9成NLP面试者的高频面题】LSTM中的tanh和sigmoid分别用在什么地方?为什么?

博客主页: [青松] 本文专栏: NLP 大模型百面百过 【淘汰9成NLP面试者的高频面题】LSTM中的tanh和sigmoid分别用在什么地方?为什么? 重要性:★★★ 💯 本题主要考察面试者对以下问题的理解: ① 数据特征和模…...

gocv调用opencv添加中文乱码的解决方案

前言 相信很多做视觉的同学在使用opencv给图片添加中文文字的时候会出现这样的乱码显示: 而实际上你期望的是“告警时间:2011-11-11 11:11:11 告警类型:脱岗检测告警 Area:XXXXX Camera:Camera001-001”这样的显示内容,那么这篇文章我将用很简单的方法来解决乱码问题,只需…...

org.apache.log4j的日志记录级别和基础使用Demo

org.apache.log4j的日志记录级别和基础使用Demo,本次案例展示,使用是的maven项目,搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件,log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…...

IC数字后端实现之大厂IC笔试真题(经典时序计算和时序分析题)

今天小编给大家分享下每年IC秋招春招必考题目——静态时序分析时序分析题。 数字IC后端笔试面试题库 | 经典时序Timing计算题 时序分析题1: 给定如下图所示的timing report,请回答一下几个问题。 1)这是一条setup还是hold的timing report?…...

java centos 离线使用sherpa-onnx文字转语音TTS

sherpa-onnx: https://github.com/k2-fsa/sherpa-onnx.git 文档链接;Java API — sherpa 1.3 文档 1. 项目基础介绍和主要编程语言 sherpa-onnx 是一个基于下一代 Kaldi 和 onnxruntime 的开源项目,专注于语音识别、文本转语音、说话人识别和语音活动检测(VAD)等功能。该项…...

Android 11 三方应用监听关机广播ACTION_SHUTDOWN

前言 最近有项目过程中,有做app的同事反馈,三方应用无法监听关机广播。特地研究了下关机广播为啥监听不到。 1.原因:发送关机广播的类是ShutdownThread.java,添加了flag:Intent.FLAG_RECEIVER_FOREGROUND | Intent.FLAG_RECEIVER…...

OpenHarmony-3.驱动HDF

OpenHarmony HDF 框架 1.OpenHarmony HDF 框架概述 OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力…...

《白帽子讲Web安全》13-14章

《白帽子讲Web安全》13-14章 《白帽子讲Web安全》13-14章13、应用层拒绝服务攻击13.1、DDOS简介13.2、应用层DDOS13.2.1、CC攻击13.2.2、限制请求频率13.2.3、道高一尺,魔高一丈 13.3、验证码的那些事儿13.4、防御应用层DDOS13.5、资源耗尽攻击13.5.1、Slowloris攻击…...

CSS - CSS One-Line

1. aspect-ratio 描述: 用于定义元素的宽高比,简化了以往使用“填充黑客”的方法。只需指定一个比率,浏览器会自动调整元素的尺寸 案例: .aspect-ratio-hd {aspect-ratio: 16/9; } .aspect-ratio-square {aspect-ratio: 1; /* 正方形 */ }2. object-…...

gitlab ssh-key 绑定

windows环境下配置 gitlab的ssh key: 1.打开本地git bash,使用如下命令生成ssh公钥和私钥对: ssh-keygen -t rsa -C xxxxxx.com 2.一直回车; 3.然后打开公钥文件:C:/Users/Administrator/.ssh/id_rsa.pub文件,复制其中的内容; 4…...

wordpress使用Markdown语法写的文章图片显示不正常,记录一次折腾之旅

wordpress使用Markdown语法写的文章图片显示不正常,记录一次折腾之旅 当我把wordpress站点地址改成域名之后,wordpress上写的文章是使用Markdown语法进行写作的,但是Markdown引用的图片就会加载不出来,但如果把站点地址改成局域网的IP,所有的一切都显示正常了。除非我把图…...

从零开始学GeoServer源码(二)添加支持arcgis切片功能

文章目录 参考文章环境背景1、配置打包好的程序1.1、下载GeoServer的war包1.2、下载GeoWebCache1.3、拷贝jar包1.4、修改配置文件1.4.1、拷贝geowebcache-arcgiscache-context.xml1.4.2、修改geowebcache-core-context.xml1.4.3、修改geowebcache-servlet.xml 1.5、配置切片信息…...

WPF异步UI交互功能的实现方法

前面的文章我们提及过,异步UI的基础实现。基本思路主要是开启新的UI线程,并通过VisualTarget将UI线程上的Visual(即RootVisual)连接到主线程上的UI上即可渲染显示。 但是,之前的实现访问是没有交互能力的,视觉树上的UI并不能实现…...

网络基础 - 地址篇

一、IP 地址 IP 协议有两个版本,IPv4 和 IPv6IP 地址(IPv4 地址)是一个 4 字节,32 位的正整数,通常使用 “点分十进制” 的字符串进行表示,例如 192.168.0.1,用点分割的每一个数字表示一个字节,范围是 0 ~…...

# [Unity] 【游戏开发】Unity开发基础2-Unity脚本编程基础详解

Unity脚本编程是创建互动式游戏体验的核心技能之一。本文将详细讲解Unity脚本编程的基础知识,包括变量和数据类型、程序逻辑、方法等方面,并通过实例展示如何使用这些基本知识完成简单功能的实现。 1. 新建Unity脚本的基本结构 当在Unity中创建一个脚本时,Unity会生成如下基…...

Milvus实操

概念 Milvus 关键概念优化笔记 Milvus 是一个高性能、可扩展的开源向量数据库,专为处理海量向量数据和执行相似性搜索而设计。以下是 Milvus 中的一些核心概念及其详细解释。 1. 集合(Collection) 定义: 集合是 Milvus 中存储向…...

35 基于单片机的精确电压表DA-AD转换

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DAC0832和ADC0832检测电压,0到8.5V,设计复位电路 LED管显示实际稳压值,初始电压0 二、硬件资源 基于KEIL5编写C代码&#xff0c…...

JDBC 设置 PostgreSQL 查询中 any(?) 的参数

这段时间都纠缠于 Java 如何操作 PostgreSQL 数据库上,千方百计的为求得更好的性能。为此我们用上了 Batch, 或用 id any(?) 这种更 PostgreSQL 化的数组参数操作。其实它还有更多数组方面的花样可以玩,毕竟 PostgreSQL 数据库有一种广纳百川的胸怀&am…...

【11-20期】Java面试进阶:深入解析核心问题与实战案例

🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 文章题目:Java面试进阶:深入解析11-20期核心问题与实战案例 摘要: 本篇…...

C++——内存池_2

C内存池 重载 new 和 delete 运算符C内存池使用内存池的目的逐步实现内存池 重载 new 和 delete 运算符 实际开发中,重载new和delete的主要目的是实现内存池。内存池在高性能的服务程序中很常用。点击浏览重载 new 和 delete 运算符的内容,建议先看这部…...

如何使用PHP爬虫获取店铺详情:一篇详尽指南

在数字化时代,数据的价值不言而喻。对于企业来说,获取竞争对手的店铺详情、顾客评价等信息对于市场分析和决策至关重要。PHP作为一种广泛使用的服务器端脚本语言,结合其强大的库支持,使得编写爬虫程序变得简单而高效。本文将详细介…...

HTML5和CSS3新增特性

HTML5的新特性 HTML5新增的语义化标签 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量…...

linux运行vue编译后的项目

如果你的 Vue 项目使用了 history 模式(而非默认的 hash 模式),在纯静态服务器中会出现类似的问题。因为 Vue Router 的 history 模式要求所有未匹配的路径都重定向到 index.html,以便 Vue 前端处理路径。 首先在本地执行npm run…...

论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline

论文代码开源链接: A Software Platform for Manipulating the Camera Imaging Pipelinehttps://karaimer.github.io/camera-pipeline/摘要:论文提出了一个Pipline软件平台,可以方便地访问相机成像Pipline的每个阶段。该软件允许修改单个模块…...

【MySQL篇】持久化和非持久化统计信息的深度剖析(第一篇,总共六篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...

Ubuntu下安装Qt

1.如图1所示,在Index of /archive上下载安装包; 图1 2.将图1安装包下载好之后,通过共享文件夹的方式拷贝到ubutntu,如图2所示; 图2 3.如图3所示,执行chmod x qt-creator-opensource-linux-x86_64-10.0.2.…...

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL(丹摩智算) 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…...

数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别

数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别 说一下索引失效的场景?什么是慢查询?原因是什么?可以怎么优化?undo …...

一级a做爰片免费观看 安全网站/百度舆情

看到Python中有个函数名比较奇特,__init__我知道加下划线的函数会自动运行,但是不知道它存在的具体意义..Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privat…...

南通网站托管/seo导航站

包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT人员 通过一个中央数据仓库,在不同地方就能交互信息。4. 测试环境4.1. 硬件环境1> 处理器:Intel Pentium 166 MX 或更高 2> 内存:32MB 以上 3> 硬盘空间&#x…...

网站制作中英文天津/seo综合查询国产

目录 1.开启Hadoop集群和Hive元数据、Hive远程连接 2.配置 3.读取日志文件并清洗 4.单独处理第四列的数据——方法一: 5.单独处理第四列的数据——方法二: 6.单独处理第四列的数据——方法三: 7.数据清洗结果展示 8.存入Hive中 9.…...

公司做网站多/搜索引擎优化方法有哪些

作者:瀚高PG实验室 (Highgo PG Lab)- 波罗 autovacuum 是 postgresql 里非常重要的一个服务端进程,能够自动地执行,在一定条件下自动地对 dead tuples 进行清理并对表进行分析 autovacuum参数控制 autovacuum 进程是…...

基础集团网站建设/惊艳的网站设计

选择宣传册的尺寸,是开始宣传册设计的第一步,宣传册印刷样式多种多样,做法千变万化,但是宣传册尺寸是宣传册的基调,最常规的规格主要有以下几种:1、最常规的宣传册印刷尺寸,适合绝大多数企业和场…...

新校区建设网站管理规定/杭州疫情最新情况

如果版本开发测试过程中没有流程的约束,会出现什么样的情况?如果不管版本大小、不考虑版本特性强制使用标准流程约束,又会是什么样?我经常听到的抱怨是流程太厚重了,流程导致了版本开发周期变长、成本增加了。可是&…...