《深度学习》AlexNet网络

ops/2024/11/17 0:42:13/

文章目录

  • 1.AlexNet的网络架构
  • 2.示例:手写数字识别
    • 2.1 数据读取

学习目标:

  • 知道AlexNet网络结构
  • 能够利用AlexNet完成图像分类

2012年,AlexNet横空出世,该模型的名字源于论⽂第⼀作者的姓名AlexKrizhevsky 。AlexNet使⽤了8层卷积神经⽹络,以很⼤的优势赢得了
ImageNet 2012图像识别挑战赛。它⾸次证明了学习到的特征可以超越⼿⼯设计的特征,从⽽⼀举打破计算机视觉研究的⽅向。

1.AlexNet的网络架构

AlexNet与LeNet的设计理念⾮常相似,但也有显著的区别,其⽹络架构如下图所示:
在这里插入图片描述
网络的特点是:

  • AlexNet包含8层变换,有5层卷积和2层全连接隐藏层,以及1个全连接输出层(softmax)
  • AlexNet第⼀层中的卷积核形状1111,第⼆层中的卷积核形状减⼩到55,之后全采⽤33。所有的池化层窗⼝⼤⼩为33、步幅为2的最⼤池化。
  • AlexNet将sigmoid激活函数改成了ReLU激活函数,使计算更简单,⽹络更容易训练
  • AlexNet通过dropOut来控制全连接层的模型复杂度。
  • AlexNet引⼊了⼤量的图像增强,如翻转、裁剪和颜⾊变化,从⽽进⼀步扩⼤数据集来缓解过拟合。

在tf.keras中实现AlexNet模型:

import tensorflow as tf
# 搭建网络
net = tf.keras.Sequential([# 第一个卷积层:卷积核个数是96,卷积核大小是11,步长是4tf.keras.layers.Conv2D(filters=96, kernel_size=11, strides=4, activation='relu'),# 池化,都是3*3,步长为2tf.keras.layers.MaxPooling2D(pool_size=3, strides=2),# 第二层卷积:卷积核个数是256,卷积核大小是5,padding为sametf.keras.layers.Conv2D(filters=256, kernel_size=5, padding='same', activation='relu'),# 池化tf.keras.layers.MaxPooling2D(pool_size=3, strides=2),# 紧跟着三个卷积层:卷积核个数分别是384,384,256,卷积核大小都是3,padding都是sametf.keras.layers.Conv2D(filters=384, kernel_size=3, padding='same', activation='relu'),tf.keras.layers.Conv2D(filters=384, kernel_size=3, padding='same', activation='relu'),tf.keras.layers.Conv2D(filters=256, kernel_size=3, padding='same', activation='relu'),# 池化tf.keras.layers.MaxPooling2D(pool_size=3, strides=2),# 摊开,伸展成一维的向量tf.keras.layers.Flatten(),# 全连接,4096tf.keras.layers.Dense(4096, activation='relu'),# 正则化,随机失活tf.keras.layers.Dropout(0.5),# 全连接,4096tf.keras.layers.Dense(4096, activation='relu'),# 正则化,随机失活tf.keras.layers.Dropout(0.5),# 输出层tf.keras.layers.Dense(10, activation='softmax')]

我们构造⼀个⾼和宽均为227的单通道数据样本来看⼀下模型的架构:

# 构造输入为xX,并将其送入到net网络
X = tf.random.uniform((1, 227, 227, 1))
y = net(X)
# 查看网络的结构
net.summary()

在这里插入图片描述

2.示例:手写数字识别

AlexNet使⽤ImageNet数据集进⾏训练,但因为ImageNet数据集较⼤训练时间较⻓,我们仍⽤前⾯的MNIST数据集来演示AlexNet。读取数据的时将图像⾼和宽扩⼤到AlexNet使⽤的图像⾼和宽227。这个通过 tf.image.resize_with_pad 来实现。

2.1 数据读取

之后补充。。。。。


http://www.ppmy.cn/ops/134280.html

相关文章

Spring Boot编程训练系统:从概念到实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

【2025最新计算机毕业设计】基于SpringBoot+Vue电脑在线装机指南教程网站【源码+文档】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

C++__day1

1、思维导图 2、如果登录失败&#xff0c;提示用户登录失败信息&#xff0c;并且提示错误几次&#xff0c;且重新输入&#xff1b;如果输入错误三次&#xff0c;则退出系统 #include <iostream> using namespace std;int main() {string id , pswd;string user"admi…

12. Redis实现会话管理和token认证

在现代Web应用中&#xff0c;会话管理和身份认证是实现用户登录、权限管理等功能的基础。传统的会话管理通过服务器端保存会话信息来实现&#xff0c;但随着应用的扩展&#xff0c;尤其在分布式系统中&#xff0c;这种方式的局限性逐渐显现。Redis作为分布式缓存系统&#xff0…

flask+vue使用jwt验证

为什么要使用jwt验证&#xff1f; jwt&#xff08;json web token&#xff09;主要用来解决单点登录&#xff08;SSO&#xff09;问题。设想一个场景&#xff0c;你在淘宝登录了你的账号&#xff0c;然后打开天猫&#xff08;天猫属于淘宝的子网站&#xff09;&#xff0c;那么…

什么是UDP和TCP?有什么区别?应用场景分别都有哪些?

UDP&#xff08;用户数据报协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;都是互联网协议套件的一部分&#xff0c;用于在网络中传输数据。它们都位于OSI模型的传输层&#xff0c;但两者在工作方式、可靠性和使用场景上存在显著差异。 UDP (User Datagram Protoc…

Flink_DataStreamAPI_执行环境

DataStreamAPI_执行环境 1创建执行环境1.1getExecutionEnvironment1.2createLocalEnvironment1.3createRemoteEnvironment 2执行模式&#xff08;Execution Mode&#xff09;3触发程序执行 Flink程序可以在各种上下文环境中运行&#xff1a;我们可以在本地JVM中执行程序&#x…

C# VS的常用功能(一) 视图篇

其实也没什么技术含量,看看就行 资源管理器视图的树形结构 我们可以清晰地看到其树形结构,也知道了一个解决方案可以包含多个程序节点 当然 一个程序节点也可以被多个解决方案包含,日后再说 解决方案节点是管理项目的 项目节点是可以包含具体的类和方法 程序节点是程序的主…