神经网络模型---AlexNet

news2024/11/24 10:41:21

一、AlexNet

1.导入tensorflow库,这里给简称为tf库

import tensorflow as tf
from tensorflow.keras import datasets, layers, models

datasets:是用于训练和测试机器学习模型的数据集合
layers:是构建神经网络模型的关键组成部分
models:是构建的神经网络架构;用于从数据中学习特征并进行预测

2.加载Fashion-MNIST数据集

(train_images, train_labels), (test_images, test_labels) = datasets.fashion_mnist.load_data()

load_data是一个方法,用来加载数据集
train_images:一个数组,包含了灰度图像,用于训练模型
train_labels: 包含图像数量的整数值,范围从0到9,每个值对应于train_images中相应图像的类别标签
test_images和test_labels与上述说明一致

3.归一化,将像素值范围在[0,1]之间

train_images = train_images / 255.0
test_images =  test_images / 255.0

4.数据集的图像是灰度图像,需增加一个颜色通道

train_images = tf.expand_dims(train_images, axis=-1)
test_images = tf.expand_dims(test_images, axis=-1)

train_images的原始形状:(60000,28,28);60000是训练样本的数量
expand_dims用于增加一个新的维度。
axis=-1指定增加新的维度位置。-1表示最后一个轴,即(60000,28,28,1)
test_images同理

5.将标签从整数形式转换为独热编码形式

train_labels = tf.one_hot(train_labels, depth=10)
test_labels = tf.one_hot(test_labels, depth=10)

独热编码是一种将分类数据表示为二进制向量的方法,每个类别对应一个唯一的二进制向量,向量中只有一个元素是1,其余都是0
tf.one_hot()函数将其转换为形状为(60000, 10)的二维数组
test_labels同理

6.创建AlexNet模型

model = models.Sequential([

6.1添加卷积层,该层有32个3x3的卷积核,激活函数为relu,并且指定了输入形状为28x28像素的单通道图像

layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),

6.2添加一个2x2的最大池化层

layers.MaxPooling2D((2, 2)),

6.3添加第二个卷积层

layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(128, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),

6.4将池化层的输出展平为1个一维向量

layers.Flatten(),

6.5添加一个全连接层,该层有128个神经元

layers.Dense(128, activation=‘relu’),

6.6全连接层,有10个神经元,对应数据集的10个类别,激活函数:softmax输出每个类别的概率分布

    layers.Dense(10, activation='softmax')
])

7.编译模型

model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])

参数1:使用了Adam优化器,结合了动量和自适应学习率的优点
参数2:此处使用的损失函数 是一种多分类问题的交叉熵损失函数
参数3:指定在训练过程中要计算的评估指标:这里计算了准确率这个指标

8.训练模型

model.fit(train_images,train_labels,epochs=10,batch_size=64,validation_data=(test_images,test_labels))

model.fit函数作用:执行模型的训练过程
参数1:训练集的图像数据,它是一个四维张量
参数2:训练集的标签数据,它是一个二维张量
参数3:训练过程将进行的完整循环次数
参数4:每次梯度更新时使用的样本数量
参数5:用于验证的测试数据集,可评估性能,避免过拟合

结果:
在这里插入图片描述

9.保存模型

model.save('AlexNet.h5')

结果:
在这里插入图片描述

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

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

相关文章

从实例出发,深入探索Java SE中数组的易错点

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

ICMR 2024在普吉岛闭幕,学者与泰国舞者共舞,燃爆全场

惊艳!ICMR 2024在普吉岛闭幕,学者与泰国舞者共舞,燃爆全场! 会议之眼 快讯 ICMR(International Conference on Multimedia Retrieval)即国际多媒体检索会议,是一个专注于多媒体检索领域的顶级…

【SkiaSharp绘图05】SKPaint详解(三)之ImageFilter(颜色、组合、膨胀、移位、光照、反射、阴影、腐蚀、变换)

文章目录 ImageFilterCreateColorFilter 颜色滤镜CreateCompose 滤镜组合CreateDilate 膨胀滤镜CreateDisplacementMapEffect 移位映射CreateDistantLitDiffuse 光照CreateDistantLitSpecular 反射光照CreateDropShadow阴影效果CreateDropShadowOnly 只阴影效果CreateErode腐蚀…

大模型基础知识:探索人工智能的巨轮

人工智能大模型,这个在近年来频繁出现在科技新闻和学术论坛的热门词汇,已经成为了推动人工智能技术发展的关键力量。这些大模型,如OpenAI的GPT-3、谷歌的BERT、百度的ERNIE等,以其强大的性能和广泛的应用范围,引起了广…

【STM32】GPIO简介

1.GPIO简介 GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。 STM32芯片的GPIO被分成很多组,每组有16个引脚。 最基本的输出…

Flutter 小技巧之面试题里有意思的异步问题

很久没更新小技巧系列了,本次简单介绍一下 Flutter 面试里我认为比较有意思的异步基础知识点。 首先我们简单看一段代码,如下代码所示,是一个循环定时器任务,这段代码里: testFunc 循环每 1 秒执行一次 asyncWorkasy…

缓存技术实战[一文讲透!](Redis、Ecache等常用缓存原理介绍及实战)

目录 文章目录 目录缓存简介工作原理缓存分类1.按照技术层次分类2.按照应用场景分类3.按照缓存策略分类 应用场景1.硬件缓存2.软件缓存数据库缓存Web开发应用层缓存 3.分布式缓存4.微服务架构5.移动端应用6.大数据处理7.游戏开发 缓存优点缓存带来的问题 常见常用Java缓存技术1…

npm install cnpm -g 报错4048

npm install cnpm -g 报错4048 设置淘宝镜像: 报错如下: 其他博主提供的方法都尝试了,比如管理员权限打开终端,删除.npmrc文件,清除缓存npm cache clean -f等都试了无效,最后怀疑是npm和cnpm版本不对应&…

环境搭建---单机k8s

配置基础环境 关闭防火墙 [rootVM-20-14-centos ~]# systemctl stop firewalld && systemctl disable firewalld关闭selinux [rootVM-20-14-centos ~]# setenforce 0 && sed -i "s/SELINUXenforcing/SELINUXdisabled/g" /etc/selinux/config禁止s…

JVM性能优化工具及问题排查

jvm性能优化工具 jdk提供给我们了很实用的工具来分析JVM的状态,线程以及配置,这些工具包含于jdk中,并且以java实现,是JVM性能优化必不可少的工具集,这些工具都在$JAVA_HOME/bin下 jps、jinfo、jstack、jmap、jstat基本…

Java 开发实例:Spring Boot+AOP+注解+Redis防重复提交(防抖)

文章目录 1. 环境准备2. 引入依赖3. 配置Redis4. 创建防重复提交注解5. 实现AOP切面6. 创建示例Controller7. 测试8. 进一步优化8.1 自定义异常处理8.2 提升Redis的健壮性 9. 总结 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨…

AI从云端到边缘:人员入侵检测算法的技术原理和视频监控方案应用

在当今数字化、智能化的时代,安全已成为社会发展的重要基石。特别是在一些关键领域,如公共安全、智能化监管以及智慧园区/社区管理等,确保安全无虞至关重要。而人员入侵检测AI算法作为一种先进的安全技术,正逐渐在这些领域发挥着不…

怎样打印微信文档文件?

在日常生活和工作中,我们经常需要打印微信中的文档文件,无论是工作资料、学习笔记还是其他重要信息。随着科技的发展,我们不再需要前往打印店进行繁琐的操作,而是可以通过一些便捷的在线打印平台轻松实现。今天,我们就…

git 快速将当前目录添加仓储

一、进入目录 git init git add . git commit -m "init" git remote add origin http://192.168.31.104/root/AutoBuildDemo.git 二、登录gitlab,创建项目AutoBuildDemo 最后执行: git push -u origin master

【C语言】--- 常见调试信息预处理器宏

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【C语言】--- 常见调试信息预处理器宏 开…

如何用Java SE数组实现高速的数字转换功能

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

技术分析:开源大模型的兴起与热门项目推荐

技术分析:开源大模型的兴起与热门项目推荐 引言 随着人工智能(AI)技术的不断发展,开源大模型成为了许多程序员和研究人员关注的焦点。开源项目不仅促进了技术的快速迭代和普及,还为更多的人提供了学习和实践的机会。…

推荐常用的三款源代码防泄密软件

三款源代码防泄密软件——安秉源代码加密、Virbox Protector 和 MapoLicensor——确实各自在源代码保护的不同方面有其专长。这些软件可以满足企业对于源代码保护的三大需求:防止泄露、防止反编译和防止破解。 安秉源代码加密: 专注于源代码文件的加密&…

惊艳视觉!7个让你大开眼界的数据可视化案例

数据可视化是指通过视觉呈现信息的一种方式,它仍处于不断演变的过程中。许多企业、政府和其他组织都使用数据可视化分析来寻求保持竞争优势。在界面设计中,数据可视化也呈现出越来越流行的趋势,学习数据可视化也是设计师保持竞争优势的一种方…

进程间通信以及线程的同步互斥机制

1.进程间通信机制 常用的六种通信机制: 管道、消息队列、共享内存、信号灯集、信号、Socket 管道(Pipe)和无名管道(匿名管道): 管道是一种半双工的通信方式,数据只能单向流动,通常…