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

机器学习——典型的卷积神经网络

机器学习——典型的卷积神经网络

卷积神经网络(Convolutional Neural Networks,CNNs)是一类在图像处理领域应用广泛的深度学习模型。它通过卷积操作和池化操作来提取图像的特征,并通过全连接层来进行分类或回归任务。在本文中,我们将介绍三种典型的卷积神经网络:LeNet-5、AlexNet和ResNet,并用Python实现这些算法。

1. LeNet-5

LeNet-5是由Yann LeCun等人于1998年提出的用于手写数字识别的卷积神经网络,它是深度学习领域的先驱之一。LeNet-5主要由卷积层、池化层和全连接层组成。

网络结构

  1. 输入层:32x32的灰度图像
  2. 卷积层C1:6个5x5的卷积核,步长为1
  3. 池化层S2:2x2的最大池化,步长为2
  4. 卷积层C3:16个5x5的卷积核,步长为1
  5. 池化层S4:2x2的最大池化,步长为2
  6. 全连接层C5:120个神经元
  7. 全连接层F6:84个神经元
  8. 输出层:10个神经元,对应10个类别

参数数量

  • C1:(5x5+1) * 6 = 156
  • C3:(5x5x6+1) * 16 = 2416
  • C5:(400+1) * 120 = 48120
  • F6:(120+1) * 84 = 10164
  • 输出层:(84+1) * 10 = 850

总参数数量:156 + 2416 + 48120 + 10164 + 850 = 61906

Python实现

import torch
import torch.nn as nnclass LeNet5(nn.Module):def __init__(self):super(LeNet5, self).__init__()self.conv1 = nn.Conv2d(1, 6, kernel_size=5)self.conv2 = nn.Conv2d(6, 16, kernel_size=5)self.fc1 = nn.Linear(16*5*5, 120)self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):x = torch.relu(self.conv1(x))x = torch.max_pool2d(x, kernel_size=2, stride=2)x = torch.relu(self.conv2(x))x = torch.max_pool2d(x, kernel_size=2, stride=2)x = x.view(-1, 16*5*5)x = torch.relu(self.fc1(x))x = torch.relu(self.fc2(x))x = self.fc3(x)return x# 创建LeNet-5模型实例
model = LeNet5()

2. AlexNet

AlexNet是由Alex Krizhevsky等人在2012年的ImageNet挑战赛上获胜的卷积神经网络,它是深度学习在计算机视觉领域应用的一个重要里程碑。AlexNet主要由卷积层、池化层和全连接层组成。

网络结构

  1. 输入层:227x227的RGB图像
  2. 卷积层C1:96个11x11的卷积核,步长为4
  3. 池化层S2:3x3的最大池化,步长为2
  4. 卷积层C3:256个5x5的卷积核,步长为1
  5. 池化层S4:3x3的最大池化,步长为2
  6. 卷积层C5:384个3x3的

卷积核,步长为1
7. 卷积层C6:384个3x3的卷积核,步长为1
8. 卷积层C7:256个3x3的卷积核,步长为1
9. 全连接层FC8:4096个神经元
10. 全连接层FC9:4096个神经元
11. 输出层:1000个神经元,对应1000个类别

参数数量

  • C1:(11x11x3+1) * 96 = 34944
  • C3:(5x5x96+1) * 256 = 614656
  • C5:(3x3x256+1) * 384 = 885120
  • C6:(3x3x384+1) * 384 = 1327488
  • C7:(3x3x384+1) * 256 = 884992
  • FC8:(9216+1) * 4096 = 37752832
  • FC9:(4096+1) * 4096 = 16781312
  • 输出层:(4096+1) * 1000 = 4097000

总参数数量:34944 + 614656 + 885120 + 1327488 + 884992 + 37752832 + 16781312 + 4097000 = 62083544

Python实现

import torch
import torch.nn as nnclass AlexNet(nn.Module):def __init__(self):super(AlexNet, self).__init__()self.features = nn.Sequential(nn.Conv2d(3, 96, kernel_size=11, stride=4),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),nn.Conv2d(96, 256, kernel_size=5, padding=2),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),nn.Conv2d(256, 384, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(384, 384, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(384, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),)self.avgpool = nn.AdaptiveAvgPool2d((6, 6))self.classifier = nn.Sequential(nn.Dropout(),nn.Linear(256 * 6 * 6, 4096),nn.ReLU(inplace=True),nn.Dropout(),nn.Linear(4096, 4096),nn.ReLU(inplace=True),nn.Linear(4096, 1000),)def forward(self, x):x = self.features(x)x = self.avgpool(x)x = torch.flatten(x, 1)x = self.classifier(x)return x# 创建AlexNet模型实例
model = AlexNet()

3. ResNet

ResNet是由Kaiming He等人在2015年提出的一个非常深的卷积神经网络,它采用了残差连接(Residual Connection)的方式来解决深层神经网络训练过程中的梯度消失问题。ResNet主要由卷积层、残差块和全连接层组成。

网络结构

  1. 输入层:224x224的RGB图像
  2. 卷积层:64个7x7的卷积核,步长为2,使用零填充
  3. 池化层:3x3的最大池化,步长为2
  4. 残差块(Residual Block):包含多个残差单元(Residual Unit)
  5. 全局平均池化层(Global Average Pooling)
  6. 全连接层:1000个神经元,对应1000个类别

参数数量

ResNet的参数数量取决于其深度,因为它的大部分层都是卷积层和残差块。具体参数数量可以根据网络

深度和残差块的数量进行计算。

Python实现

ResNet的实现较为复杂,可以使用PyTorch等深度学习框架提供的预训练模型来直接使用。

import torch
import torchvision.models as models# 加载预训练的ResNet模型
model = models.resnet50(pretrained=True)

总结

本文介绍了三种典型的卷积神经网络:LeNet-5、AlexNet和ResNet。这些网络在图像分类、目标检测和语义分割等计算机视觉任务中取得了巨大成功。它们的设计思想和结构各不相同,但都为深度学习在图像处理领域的发展做出了重要贡献。

相关文章:

机器学习——典型的卷积神经网络

机器学习——典型的卷积神经网络 卷积神经网络(Convolutional Neural Networks,CNNs)是一类在图像处理领域应用广泛的深度学习模型。它通过卷积操作和池化操作来提取图像的特征,并通过全连接层来进行分类或回归任务。在本文中&am…...

速通数据结构与算法第四站 双链表

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 感谢佬们…...

51单片机学习笔记12 SPI接口 使用1302时钟

51单片机学习笔记12 SPI接口 使用1302时钟 一、DS1302简介1. 功能特性2. 涓流充电3. 接口介绍时钟数据和控制线:电源线:备用电池连接: 二、寄存器介绍1. 控制寄存器2. 时间寄存器3. 日历/时钟寄存器 三、BCD码介绍四、DS1302时序1. 读时序2. …...

php编辑器 ide 主流编辑器的优缺点。phpstorm vscode atom 三者对比

编辑器PhpStormvscodeAtom是否收费收费,有30天试用期免费免费内存占用Java平台,一个进程1G多内存占用好几个进程,合起来1G上下/基本功能都具备,有的功能需要装插件都具备,有的功能需要装插件都具备,有的功能…...

【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现

目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 认识RMSProp算法 🌼2. 在optimizer_compare_naive.py中加入RMSProp 🌼3. 在optimizer_compare_mnist.py中加入RMSProp 🌼4. 问…...

大转盘抽奖小程序源码

源码介绍 大转盘抽奖小程序源码,测试依旧可用,无BUG,跑马灯旋转效果,非常酷炫。 小程序核心代码参考 //index.js //获取应用实例 var app getApp() Page({data: {circleList: [],//圆点数组awardList: [],//奖品数组colorCirc…...

数据结构(无图版)

数据结构与算法(无图版,C语言实现) 1、绪论 1.1、数据结构的研究内容 一般应用步骤:分析问题,提取操作对象,分析操作对象之间的关系,建立数学模型。 1.2、基本概念和术语 数据:…...

软件测试中的顶级测试覆盖率技术

根据 CISQ 报告,劣质软件每年给美国公司造成约2.08 万亿美元的损失。虽然软件工具是企业和行业领域的必需品,但它们也容易出现严重错误和性能问题。人类手动测试不再足以检测和消除软件错误。 因此,产品或软件开发公司必须转向自动化测试&am…...

vscode使用技巧

常用快捷键 代码格式 Windows系统。格式化代码的快捷键是“ShiftAltF” Mac系统。格式化代码的快捷键是“ShiftOptionF” Ubuntu系统。格式化代码的快捷键是“CtrlShiftI”配置缩进 点击左上角的“文件”菜单,然后选择“首选项”>“设置”,或者使用…...

JSP

概念:Java Server Pages,Java服务端页面 一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容 JSP HTML Java 快速入门 注:Tomcat中已经有了JSP的jar包,因此我们…...

Mybatis--TypeHandler使用手册

TypeHandler使用手册 场景:想保存user时 teacher自动转String ,不想每次保存都要手动去转String;从DB查询出来时,也要自动帮我们转换成Java对象 Teacher Data public class User {private Integer id;private String name;priva…...

网络编程(TCP、UDP)

文章目录 一、概念1.1 什么是网络编程1.2 网络编程中的基本知识 二、Socket套接字2.1 概念及分类2.2 TCP VS UDP2.3 通信模型2.4 接口方法UDP数据报套接字编程TCP流套接字编程 三、代码示例3.1 注意点3.2 回显服务器基于UDP基于TCP 一、概念 首先介绍了什么是网络编程&#xff…...

Python快速入门系列-7(Python Web开发与框架介绍)

第七章:Python Web开发与框架介绍 7.1 Flask与Django简介7.1.1 Flask框架Flask的特点Flask的安装一个简单的Flask应用示例7.1.2 Django框架Django的特点Django的安装一个简单的Django应用示例7.2 前后端交互与数据传输7.2.1 前后端交互7.2.2 数据传输格式7.2.3 示例:使用Flas…...

最长对称子串

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。 输入格式: 输入在一行中给出长度不超过1000的非空字符串。 输出格式&…...

【大模型】大模型 CPU 推理之 llama.cpp

【大模型】大模型 CPU 推理之 llama.cpp llama.cpp安装llama.cppMemory/Disk RequirementsQuantization测试推理下载模型测试 参考 llama.cpp 描述 The main goal of llama.cpp is to enable LLM inference with minimal setup and state-of-the-art performance on a wide var…...

异地组网怎么管理?

在当今信息化时代,随着企业的业务扩张和员工的分布,异地组网已经成为越来越多企业的需求。异地组网管理相对来说是一项复杂而繁琐的任务。本文将介绍一种名为【天联】的管理解决方案,帮助企业更好地管理异地组网。 【天联】组网的优势 【天联…...

Kafka参数介绍

官网参数介绍:Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/documentation/#configuration...

如何利用待办事项清单提高工作效率?

你是否经常因为繁重的工作量而感到不堪重负?你是否在努力赶工期或经常忘记重要的电子邮件?你并不是特例。如何利用待办事项清单提高工作效率?这里有一个简单的方法可以帮你理清混乱并更高效地完成任务—待办事项清单。 这种类型的清单可以帮…...

力扣经典150题第二题:移除元素

移除元素问题详解与解决方法 1. 介绍 移除元素问题是 LeetCode 经典题目之一,要求原地修改输入数组,移除所有数值等于给定值的元素,并返回新数组的长度。 问题描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等…...

55555555555555

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…...

用Skimage学习数字图像处理(018):图像形态学处理(上)

本节开始讨论图像形态学处理,这是上篇,将介绍与二值形态学相关的内容,重点介绍两种基本的二值形态学操作:腐蚀和膨胀,以及三种复合二值形态学操作:开、闭和击中击不中变换。 目录 9.1 基础 9.2 基本操作…...

MySQL中 in 和 exists 区别

在MySQL中,IN和EXISTS都是用于在子查询中测试条件的操作符,但它们在处理和效率上有一些重要的区别。MySQL中的in语句是把外表和内表作hash连接,⽽exists语句是对外表作loop循环,每次loop循环再对内表进⾏查询。⼤家⼀直认为exists…...

Java基础 - 代码练习

第一题&#xff1a;集合的运用&#xff08;幸存者&#xff09; public class demo1 {public static void main(String[] args) {ArrayList<Integer> array new ArrayList<>(); //一百个囚犯存放在array集合中Random r new Random();for (int i 0; i < 100; …...

【Redis】redis集群模式

概述 Redis集群&#xff0c;即Redis Cluster&#xff0c;是Redis 3.0开始引入的分布式存储方案。实际使用中集群一般由多个节点(Node)组成&#xff0c;Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点&#xff1a;只有主节点负责读写请求和集群信息的维护&#…...

基于opencv的猫脸识别模型

opencv介绍 OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发&#xff0c;以BSD许可证授权发行&#xff0c;可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及…...

基于注意力整合的超声图像分割信息在乳腺肿瘤分类中的应用

基于注意力整合的超声图像分割信息在乳腺肿瘤分类中的应用 摘要引言方法 Segmentation information with attention integration for classification of breast tumor in ultrasound image 摘要 乳腺癌是世界范围内女性最常见的癌症之一。基于超声成像的计算机辅助诊断&#x…...

数据库重点知识(个人整理笔记)

目录 1. 索引是什么&#xff1f; 1.1. 索引的基本原理 2. 索引有哪些优缺点&#xff1f; 3. MySQL有哪几种索引类型&#xff1f; 4. mysql聚簇和非聚簇索引的区别 5. 非聚簇索引一定会回表查询吗&#xff1f; 6. 讲一讲前缀索引&#xff1f; 7. 为什么索引结构默认使用B…...

[技术闲聊]checklist

电路设计完成后&#xff0c;需要确认功能完整性&#xff0c;明确是否符合设计规格需求&#xff1b;需要确认电路设计是否功能符合但是系列项不符合设计规则&#xff0c;如果都没有问题&#xff0c;那么就可以发给layout工程师。 今天主要讲讲电路设计规则&#xff0c;涉及到一…...

力扣刷题 二叉树的迭代遍历

题干 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;root [1] 输…...

【二】Django小白三板斧

今日内容 静态文件配置 request对象方法初识 pycharm链接数据库&#xff08;MySQL&#xff09; django链接数据库&#xff08;MySQL&#xff09; Django ORM简介 利用ORM实现数据的增删查改 【一】Django小白三板斧 HttpResponse 返回字符串类型的数据 render 返回HTML文…...

java电影网站开发视频/重庆森林经典台词罐头

php中static关键字的作用是&#xff1a;1、放在函数内部修饰变量&#xff0c;函数执行完后变量值仍然保存&#xff1b;2、放在类中修饰属性或方法&#xff0c;如果修饰的是类的属性&#xff0c;则保留值&#xff1b;3、放在类的方法中修饰变量&#xff1b;4、修饰全局作用域的变…...

排名优化怎么做/满足seo需求的网站

http://blog.sciencenet.cn/blog-1225851-927091.html 1《GitHub入门与实践》 从Git的基本知识和操作方法入手&#xff0c;详细介绍了GitHub的各种功能&#xff0c;GitHub与其他工具或服务的协作&#xff0c;使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的…...

游戏开发工程师需要学什么/佛山百度网站排名优化

今天折腾了一天的SPI设备的驱动加载&#xff0c;甚至动用了逻辑分析仪来查看spi总线的波形&#xff0c;主要包括两个SPI设备&#xff0c;at45db321d和mcp2515&#xff0c;一个是串行的dataflash&#xff0c;一个是can总线设备芯片。前者对于我们来说非常重要&#xff0c;我们可…...

列举五种常用的网站推广方法/太原百度公司地址

现象&#xff1a; 某天点了下File---->Invalidate Caches/Restart&#xff0c;重新打开工程后&#xff0c;发现工具栏build下clean project,Generate Signed APK…啥都没了。网上找了好久&#xff0c;莫得办法&#xff0c;只能卸了重装&#xff0c;结果还是那个叼样。 解决办…...

动态网站开发报告/交换友情链接的要求有

在实际的企业开发中&#xff0c;消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。不同的中间件其实现方式&#xff0c;内部结构是不…...

买域名送网站/交换链接营销成功案例

为什么要公开这些面试题&#xff1f; 原因一&#xff1a;身边从事 Java 开发的人员越来越多&#xff0c;我的表弟表妹们&#xff0c;朋友的表弟表妹们&#xff0c;朋友的朋友的表弟表妹们&#xff0c;每次问我要相同的面试复习材料&#xff0c;已经让我疲于应付&#xff0c;索…...