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

2024-09-08 01:36

本文主要是介绍T1打卡——mnist手写数字识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

1.定义GPU

import tensorflow as tfgpus=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'),#输出层,输出维度是10layers.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 tfgpus=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")

 

 

这篇关于T1打卡——mnist手写数字识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146738

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

代码随想录打卡Day25

今天一整天都在教研室做实验,没时间刷题,就做了一题,剩下的明天补 491.递增子序列 这道题目和之前的子集问题很像,但是有一点要注意的,这个输入的数组不能进行排序,所以就不能沿用之前的去重逻辑,这道题要去重还是得借助额外的变量来维护元素使用情况,但是这题的used为集合,且不能为全局变量,只能为树层遍历前定义的一个局部变量,除了这个改动以外,其他地方都是高度相似的。 class Soluti

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib