深度卷积神经网络(AlexNet)

news2024/12/28 18:52:09

目录

1.基础简介

1.1基础介绍

1.2基础架构 

2.Alexnet与LeNet的对比

3.参考代码

4.李沐老师给出的例子


1.基础简介

1.1基础介绍

2012年,AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用了8层卷积神经网络,并以很大的优势赢得了2012年ImageNet图像识别挑战赛。

AlexNet并不是第一个赢得图像识别竞赛的GPU实现的高速卷积神经网络。 K. Chellapilla et al. (2006)在GPU上的卷积神经网络比CPU上的等效实现快四倍,Dan Cireřan等人(4)在IDSIA的深度卷积神经网络已经快了2011倍,并在5年2011月取得了超人的性能。 在6年2011月5日至15年2012月9日期间,他们的卷积神经网络赢得了四次以上的图像竞赛。 它还显著更新了文献中多个图像数据库的最高性能。

根据AlexNet的一篇论文Cireřan的早期网络“有些相似”。 两者都最初是用 CUDA 编写的,可以在 GPU 上运行。 事实上,两者都是Yann Lucan等人(1989)发表的卷积神经网络设计的变体,而福岛邦彦(称为neocognitron)则认为。 这种结构后来被J. Weng的技术修改,称为最大池化。

2015年,AlexNet赢得了亚洲研究院Microsoft 2015多层的超深度卷积神经网络,赢得了ImageNet 100竞赛。

1.2基础架构 

  • 第一层:11x11的96通道卷积,步长为4,后接ReLU激活函数和局部响应归一化(LRN),再接3x3的最大池化,步长为2。
  • 第二层:5x5的256通道卷积,步长为1,后接ReLU激活函数和LRN,再接3x3的最大池化,步长为2。
  • 第三层:3x3的384通道卷积,步长为1,后接ReLU激活函数。
  • 第四层:3x3的384通道卷积,步长为1,后接ReLU激活函数。
  • 第五层:3x3的256通道卷积,步长为1,后接ReLU激活函数和3x3的最大池化,步长为2。
  • 第六层:4096个神经元的全连接层,后接ReLU激活函数和Dropout。
  • 第七层:4096个神经元的全连接层,后接ReLU激活函数和Dropout。
  • 第八层:1000个神经元的全连接层,输出类别预测。

AlexNet使用了两个GPU来并行训练网络,并在第三、第四、第五层中使用跨GPU的连接来增加模型容量。AlexNet在ImageNet数据集上达到了15.3%的top-5错误率,比第二名低了10.8个百分点。AlexNet是计算机视觉领域最具影响力的论文之一,它证明了深度学习在图像识别任务上的优越性,并促进了更多基于CNN和GPU的研究。

2.Alexnet与LeNet的对比

首先对比两者的架构图,具有明显的进步,Alexnet具有更大更深的网络:

AlexNet和LeNet的异同如下:

  • 相同点:都是基于卷积神经网络的图像分类模型,都使用了卷积层、池化层和全连接层的组合来提取图像特征。
  • 不同点
    • AlexNet比LeNet更深更宽,有更多的参数和计算量。
    • AlexNet使用了ReLU激活函数,而LeNet使用了sigmoid激活函数。
    • AlexNet使用了Dropout来抑制过拟合,而LeNet没有。
    • AlexNet使用了数据增广来扩充训练集,而LeNet没有。
    • AlexNet使用了不同大小的卷积核(11x11, 5x5, 3x3),而LeNet只使用了5x5的卷积核。
    • AlexNet使用了最大池化,而LeNet使用了平均池化

3.参考代码

如果你想写一个AlexNet的代码,你可以参考以下的资源:

  • AlexNet Explained | Papers With Code 这个网站提供了AlexNet的详细介绍和代码实现,以及在不同的数据集和任务上的结果和排名。
  • AlexNet | Papers With Code 这个网站提供了AlexNet的PyTorch实现,以及训练和评估的方法和参数。
  • AlexNet convolutional neural network - MATLAB alexnet 这个网站提供了AlexNet的MATLAB实现,以及加载预训练模型和生成代码的方法。

4.李沐老师给出的例子

import torch
from torch import nn
from d2l import torch as d2l

net = nn.Sequential(
    # 这里使用一个11*11的更大窗口来捕捉对象。
    # 同时,步幅为4,以减少输出的高度和宽度。
    # 另外,输出通道的数目远大于LeNet
    nn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1), nn.ReLU(),
    nn.MaxPool2d(kernel_size=3, stride=2),
    # 减小卷积窗口,使用填充为2来使得输入与输出的高和宽一致,且增大输出通道数
    nn.Conv2d(96, 256, kernel_size=5, padding=2), nn.ReLU(),
    nn.MaxPool2d(kernel_size=3, stride=2),
    # 使用三个连续的卷积层和较小的卷积窗口。
    # 除了最后的卷积层,输出通道的数量进一步增加。
    # 在前两个卷积层之后,汇聚层不用于减少输入的高度和宽度
    nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),
    nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),
    nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(),
    nn.MaxPool2d(kernel_size=3, stride=2),
    nn.Flatten(),
    # 这里,全连接层的输出数量是LeNet中的好几倍。使用dropout层来减轻过拟合
    nn.Linear(6400, 4096), nn.ReLU(),
    nn.Dropout(p=0.5),
    nn.Linear(4096, 4096), nn.ReLU(),
    nn.Dropout(p=0.5),
    # 最后是输出层。由于这里使用Fashion-MNIST,所以用类别数为10,而非论文中的1000
    nn.Linear(4096, 10))
X = torch.randn(1, 1, 224, 224)
for layer in net:
    X=layer(X)
    print(layer.__class__.__name__,'output shape:\t',X.shape)

将AlexNet直接应用于Fashion-MNIST的一个问题是,Fashion-MNIST图像的分辨率(28×28像素)低于ImageNet图像。 为了解决这个问题,我们将它们增加到224×224(通常来讲这不是一个明智的做法,但在这里这样做是为了有效使用AlexNet架构)。 这里需要使用d2l.load_data_fashion_mnist函数中的resize参数执行此调整。 

 读取数据集:

batch_size = 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)

 训练网络:

lr, num_epochs = 0.01, 10
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

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

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

相关文章

[洛谷]P1162 填涂颜色(搜索连通块)

关键思路转换&#xff1a;从边界为0开始搜索&#xff0c;并且都标记&#xff0c;这些标记的不会被1包围&#xff0c;被1包围的肯定0不会被标记到&#xff0c;所以到时候把没被标记的0就是变成2即可。 详细&#xff1a; ACcode: #include<bits/stdc.h> using namespace s…

SpringCloud(2) 注册中心Eureka、Nacos

目录 1.背景2.Eureka 注册中心3.Nacos 注册中心4.常见面试题1&#xff09;服务注册和发现是什么意思&#xff1f;Spring Cloud 如何实现服务注册发现&#xff1f;2&#xff09;Nacos 和 Eureka 有什么区别&#xff1f; 1.背景 注册中心是微服务中必须要使用的组件&#xff0c;…

JavaWeb 笔记——2

JavaWeb 笔记——2 一、Maven1.1、Maven概述1.2、Maven简介1.3、Maven基本使用1.4、IDEA配置Maven1.6、依赖管理&依赖范围 二、MyBatis2.1、MyBatis简介2.2、MyBatis快速入门2.3、解决SQL映射文件的警告提示2.4、Mapper代理开发 一、Maven 1.1、Maven概述 Maven是专门用于…

时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测

时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测 目录 时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型 程序设计参考资料致谢 预测效果 基本介绍 Matlab基于PSO-LST…

高压线路距离保护程序逻辑原理(四)

四、距离I段快速动作程序逻辑框图 距离保护的故障处理程序主要有三个组成部分&#xff1a;手合及I段快速跳闸部分&#xff1b;I、II段延时动作部分&#xff1b;跳闸及后加速部分。后者在第二章的保护故障处理程序中作为各类保护共有的程序分析过。这里只分析I段的程序逻辑框图…

360手机刷机 360手机Xposed框架安装 360手机EdXposed、LSP 360手机xposed模块

360手机刷机 360手机Xposed框架安装 360手机EdXposed、LSP 360手机xposed模块 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 手机须Twrp或root后&#xff0c;才可使用与操作Xposed安装后&#xff0c;重启…

① RESTful API

1.API&#xff08;Application Programming Interface&#xff09; API就是一个接口&#xff1b;例如玩某一款游戏&#xff0c;你不必知道游戏具体的实现细节&#xff0c;只需要知道点哪个键是哪个技能就够了&#xff0c;而这个键之所以能实现玩家与游戏的交互&#xff0c;是因…

在个人电脑上部署ChatGLM2-6B中文对话大模型

简介 ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练&#xff0c;具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&…

亚马逊点击广告有什么好处?

亚马逊点击广告可以带来以下几个好处&#xff1a; 1、增加曝光和可见性&#xff1a;亚马逊点击广告可以将你的产品展示给更多潜在的购买者。通过有针对性的广告活动&#xff0c;你可以提高产品的曝光度&#xff0c;使更多的人看到你的产品。 2、提高点击率和流量&#xff1a;…

Python 代码打包

这里写目录标题 1. pyc打包及重调用2. Cython打包及重调用 1. pyc打包及重调用 该打包方式仅为入门级&#xff0c;反编译后为源代码&#xff0c;毫无安全性 指令转换 python -m py_compile /path/**.py 代码统一转换 单个py文件打包 import py_compile py_file ["/home/…

基于STM32设计的青少年学习监控系统(华为云IOT)

一、设计需求 1.1 项目背景 近几年,我国儿童青少年的近视发生率越来越高,生活中总会看到许多小小年纪就戴着眼镜的小朋友。家长对孩子的用眼时间没有约束,电子产品对孩子眼睛的影响,写字姿势,有的孩子写字时握笔太低,以致整个人趴在桌子上等都是造成孩子近视的重要因素…

c++ freetype 解析可变字体(Variable font)

什么是可变字体 上一篇文章说了 传送门也懒的贴了&#xff0c; 自己去翻吧 前言 我这里不会贴完整的代码 也不会说的那么细&#xff0c;主要提供一些关键点和方法 正文 ‘name’ 表table 解析 TrueType 字体的解析 字体里面有很多的表table 我们需要的family和style 都在这…

C++在线五子棋对战(网页版)项目:websocket协议

目标&#xff1a;认识理解websocket协议、websocket切换过程和websocket协议格式。认识和学会使用websocketpp库常用接口。了解websocketpp库搭建服务器流程&#xff0c;认识和学会使用websocketpp库bin接口&#xff0c;最后使用websocketpp库搭建服务器。 初识websocket WebS…

OJ# 384 敲七

题目描述 ​ 有 N 个人在玩一种“敲7”游戏&#xff0c;游戏的规则是这样的&#xff1a;第 x 个人从 t 开始报数&#xff0c;然后按顺序报数&#xff0c; 当某人报的数是 7 的倍数或数字中含有 7 时&#xff0c;便被淘汰&#xff0c;剩下的人继续报数&#xff0c;直到只剩下一…

【CesiumJS入门】(6)修改3D Tiles(tileset)的位置及高度

前言 在之前一篇博客中【CesiumJS入门】&#xff08;4&#xff09;加载3D Tiles并获取tileset&#xff0c;我们成功得加载了3D Tiles数据集&#xff0c;本篇中&#xff0c;将会向大伙儿介绍tileset位置的修改与恢复&#xff1a; 直接上代码了 /** Date: 2023-06-28 19:35:03*…

操作系统OS(二)进程和线程

进程 所谓进程&#xff0c;简单来说是计算机中的各种任务。 进程是程序的一次执行&#xff0c;是操作系统进行资源分配和调度的基本单位。 进程结构PCB 进程结构&#xff1a; 控制块PCB&#xff1a;进程唯一标识 程序段&#xff1a;同一个应用程序的多个进程 数据段&#xf…

Pytorch中的Exponential Moving Average(EMA)

EMA介绍 EMA&#xff0c;指数移动平均&#xff0c;常用于更新模型参数、梯度等。 EMA的优点是能提升模型的鲁棒性&#xff08;融合了之前的模型权重信息&#xff09; 代码示例 下面以yolov7/utils/torch_utils.py代码为例&#xff1a; class ModelEMA:""" …

ELK报错no handler found for uri and method [PUT] 原因

执行后提示no handler found for uri and method post&#xff0c;最新版8.2的问题&#xff1f; 原因&#xff1a; index.mapping.single_type: true在索引上 设置将启用按索引的单一类型行为&#xff0c;该行为将在6.0后强制执行。 原 {type} 要改为 _doc&#xff0c;格式如…

优炫软件自主研发再结硕果,共享存储SRAC集群数据库重磅发布

新一轮科技革命重塑全球经济结构&#xff0c;关键核心技术是产业发展的基石&#xff0c;数据库、芯片、操作系统是我国数字技术领域三大卡脖子难题。数据库向下发挥硬件算力&#xff0c;向上使能应用系统&#xff0c;是各行各业业务系统运行的基础&#xff0c;是软件行业皇冠上…

光口的作用及应用场景

在光通信中&#xff0c;交换机是一个非常重要的设备&#xff0c;它的作用是将来自不同设备的数据包进行收发和交换。之前发布的文章我们有了解到交换机的光口是如何配置的&#xff0c;本期文章我们将详细讨论交换机的光口的作用及应用场景。 一、光口的主要作用 交换机的光口…