T1打卡——mnist手写数字识别

news2024/12/27 10:54:26
  • 🍨 本文为🔗365天深度学习训练营中的学习记录博客
  • 🍖 原作者:K同学啊

1.定义GPU

import tensorflow as tf

gpus=tf.config.list_physical_devices("GPU")

if gpus:
    gpu0=gpus[0]
    tf.config.experimental.set_memort_groth(gpu0,True)   #设置GPU现存用量按需使用
    tf.config.experimental.set_visible_devices([gpu0],"GPU")

2.数据预处理

#导入数据
import tensorflow as tf
from tensorflow.keras import datasets,layers,models
import matplotlib.pyplot as plt

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

#标准化
train_images,test_images=train_images/255.0,test_images/255.0
#查看维数
train_images.shape,test_images.shape,train_labels.shape,test_labels.shape
#数据可视化
plt.figure(figsize=(20,5))
for i in range(20):
    plt.subplot(2,10,i+1)
    #不显示x轴刻度
    plt.xticks([])
    #不显示y轴刻度
    plt.yticks([])
    #不显示子图网格线
    plt.grid(False)
    #cmap是颜色图谱,plt.cm.binary是色表
    plt.imshow(train_images[i],cmap=plt.cm.binary)
    plt.xlabel(train_labels[i])
plt.show()

#重塑数据维度使其可易于被模型处理
train_images=train_images.reshape((60000,28,28,1))
test_images=test_images.reshape((10000,28,28,1))

train_images.shape,test_images.shape,train_labels.shape,test_labels.shape

55f75a2526564d6b8a3e6401b0fffd84.png3.定义CNN网络模型

#定义cnn模型
model=models.Sequential([
    ## 设置二维卷积层1,设置32个3*3卷积核
    layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)),
    #池化层1,2*2采样
    layers.MaxPooling2D((2,2)),
     # 设置二维卷积层2,设置64个3*3卷积核,
    layers.Conv2D(64,(3,3),activation='relu'),
    #池化层2,2*2采样
    layers.MaxPooling2D((2,2)),
    #连接卷积层和全连接层
    layers.Flatten(),
    #全连接层,64是输出维度
    layers.Dense(64,activation='relu'),
    #输出层,输出维度是10
    layers.Dense(10)
])
model.summary()
#定义优化器损失函数
model.compile(
    optimizer='adam',
    #交叉熵损失函数(tf.keras.losses.SparseCategoricalCrossentropy(), from_logits为True时,会将y_pred转化为概率(用softmax),否则不进行转换,通常情况下用True结果更稳定
    loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=(['accuracy'])
)

4e3d56a10e5f436c855e795924ee218e.png

4.训练模型

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

36ee9364253e470a81f0462e5dd2fb49.png

5.预测数据

plt.imshow(test_images[1])

pre=model.predict(test_images)
pre[1]

e017f98a7c024cf58b37464c984a25f7.png7d6aa815cfca4a698de75129b32c28ed.png

 

知识点总结:

1.CNN网络

7cf628d80a7e42eb86799850b101a741.png

         卷积层:通过卷积操作对输入图像进行降维和特征抽取
         池化层:是一种非线性形式的下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的鲁棒性。
         全连接层:在经过几个卷积和池化层之后,神经网络中的高级推理通过全连接层来完成。

        作用:         

  • 输入层:用于将数据输入到训练网络
  • 卷积层:使用卷积核提取图片特征
  • 池化层:进行下采样,用更高层的抽象表示图像特征
  • Flatten层:将多维的输入一维化,常用在卷积层到全连接层的过渡
  • 全连接层:起到“特征提取器”的作用
  • 输出层:输出结果

2.定义gpu的方法:

import tensorflow as tf

gpus=tf.config.list_physical_devices("GPU")

if gpus:
    gpu0=gpus[0]
    tf.config.experimental.set_memort_groth(gpu0,True)   #设置GPU现存用量按需使用
    tf.config.experimental.set_visible_devices([gpu0],"GPU")

 

 

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

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

相关文章

重卡换电连接器的应用

电动汽车换电模式涉及在专门充电站集中存储和充电大量电池,实现统一配送,并在换电站对电动汽车进行快速电池更换服务,或整合充电、物流、调配和换电服务。新能源汽车面临续航限制和配套设施不完善等问题,影响了其大规模推广。电池…

Java创建线程(5种方法)

操作系统提供api操作线程 线程本身是操作系统提供的,操作系统提供API让我们操作线程,JVM对操作系统api进行了封装,在线程这一部分,就提供了Thread类,表示线程。 创建线程 创建一个MyThread类(类的名字不…

基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真。PI控制器是一种经典的线性控制器,它通过将控制量的比例部分和积分部分相结合来实现对系统输出的调…

【C-实践】网络聊天室(1.0)

概述 使用了 tcp epoll ,实现网络聊天室 1.0 版,用户的显示框和输入框在一起 2.0 版,用户的显示框与输入框分离 功能 主要功能:用户连接服务器,就会自动进入网络聊天室与其他在线用户一起聊天 服务器搭建 创建用户数…

探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点

随着5G、AI、边缘计算、物联网(IoT)、云计算等技术的快速发展,万物互联已经从概念逐渐转变为现实,AIoT(物联网人工智能)的新时代正在加速到来。在这一背景下,视频技术作为信息传输和交互的重要手…

常见Python GUI库分析

引言 在Python环境下进行桌面编程时,选择合适的GUI(图形用户界面)库至关重要。在Python环境下进行桌面编程GUI开发时,有多个优秀的库可供选择。以下是一些推荐的GUI库,包括它们的推荐理由、优劣势以及简单的demo示例。…

【论文阅读】SwiftTheft: A Time-Efficient Model Extraction Attack Framework(2024)

完整标题 SwiftTheft: A Time-Efficient Model Extraction Attack Framework Against Cloud-Based Deep Neural Networks 摘要 With the rise of artificial intelligence(人工智能) and cloud computing(云计算), machine-learning-as-a-service platforms(机器学习即…

SpringMVC基于注解使用:JSON

01-json处理--介绍 json数据格式回顾: 在pom.xml导入依赖 在web.xml里面导入配置文件 ResponseBody 注解是将返回值作为文本返回到客户端了而不是字符串了 当我们想返回bean对象的json数据的时候我们需要先导入jackson依赖在pom.xml里面 然后创建User类&#xff0c…

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置(误~🙏🙏)三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口SpringBootApplication3、SpringBootConfiguration的Configuration4、EnableAutoConfiguration的AutoConfigura…

猜测、实现 B 站在看人数

猜测、实现 B 站在看人数 猜测找到接口参数总结 实现 猜测 找到接口 浏览器打开一个 B 站视频,比如 《黑神话:悟空》最终预告 | 8月20日,重走西游_黑神话悟空 (bilibili.com) ,打开 F12 开发者工具,经过观察&#xf…

【数据结构初阶】链表分类与双向带头循环链表接口实现

文章目录 1. 链表的分类2. 双向带头循环链表接口实现2. 1 结点声明2. 2 创建链表节点2. 3 初始化链表2. 4 打印链表2. 5 尾插2. 6 判空2. 7 尾删2. 8 头插2. 9 头删2. 10 查找2. 11 在指定位置删除与插入2. 12 销毁 3. 链表接口测试4. 单链表与双链表5. 顺序表与链表 1. 链表的…

Python安装:Mac 使用brew 安装Python2 和 Python3

安装python ## python2 brew install python ## python3 brew install python3出现错误 Error: An unexpected error occurred during the brew link step The formula built, but is not symlinked into /usr/local Permission denied dir_s_mkdir - /usr/local/Frameworks …

根据NVeloDocx Word模板引擎生成Word(一)

自从我们基于免费开放的E6开发平台,实现了根据Word模版生成Word文档的模版引擎后,也实实在在帮助到了一些有需要的朋友。但是由于制作Word模版的过程对于很多人会是一个很头疼的事情,虽然提供了详细的文档,但是我们也经常接到他们…

EcoPaste:重塑剪切板体验,让信息管理变得前所未有的高效

前言 科技,是连接梦想与现实的桥梁,它让人类的想象力得以飞翔,让未来的愿景变为现实。在它的引领下,我们跨越了时空的界限,打破了传统的束缚,以更加开放和包容的心态去迎接生活的挑战与机遇——在看似不相…

I2VGen-XL模型构建指南

一、介绍 VGen可以根据输入的文本、图像、指定的运动、指定的主体,甚至人类提供的反馈信号生成高质量的视频。它还提供了各类常用的视频生成模型工具,例如可视化、采样、训练、推理、使用图像和视频的联合训练,加速等各类工具和技术。 &quo…

图像处理基础篇-镜像仿射透视

一.图像镜像 图像镜像是图像旋转变换的一种特殊情况,通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心,将图像分为左右两部分进行堆成变换。如图7-1所示: 垂直镜像通常是以原图像的水平中轴线为中心,将…

快速搞定“照片调色”!50000+Lr预设滤镜模板,一键让你照片不再丑!

照片调色不仅仅是调整颜色,更是一种艺术表达。通过巧妙地运用 LR 预设,可以突出照片的主题,增强情感共鸣。比如,在风景照片中,使用特定的预设可以让天空更蓝、草地更绿,让大自然的美丽更加生动地展现出来。…

Java——踩坑Arrays.asList()

坑1:不能直接使用 Arrsys.asList() 来转换基本类型数据 public static void test1(){// 1、不能直接使用asList来转换基本类型数组int[] arr {1, 2, 3};List list Arrays.asList(arr);System.out.printf("list:%s size:%s class:%s", list, list.size(…

【卡码网C++基础课 18.开房门】

目录 题目描述与分析一、map的基本介绍二、map的使用三、代码编写四、范围for循环 题目描述与分析 题目描述: 假设你手里有一串钥匙,这串钥匙上每把钥匙都有一个编号,对应着一个房门的编号。现给你一个房门编号,你需要判断是否能…

【虚拟化】AIO主机安装PVE8,配置网络,安装win11(virtio,qcow2,scsi,oobe,adk)

【虚拟化】AIO主机安装PVE8,配置网络,安装win11(virtio,qcow2,scsi,oobe,adk) 文章目录 1、ESXI vs PVE,AIO主机系统二选一2、PVE网络配置(DNS,换…