01-mnist数字识别
# mnist数字识别
# 设置GPU
import tensorflow as tf
# gpus = tf.config.list_physical_devices('GPU')# if gpus:
# gpu0 = gpus[0]#如果有多个GPU,仅使用第0个GPU
# tf.config.experimental.set_memory_growth(gpu0,True)#设置GPU显存用量按需使用
# tf.config.set_visible_devices([gpu0],'GPU')
#导入数据
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()
#归一化
#将像素的值标准化至0-1的区间
train_images,test_images = train_images/255.0,test_images/255.0
train_images.shape,test_images.shape,train_labels.shape,test_labels.shape
((60000, 28, 28), (10000, 28, 28), (60000,), (10000,))
#可视化
plt.figure(figsize=(10,10))
for i in range(20):plt.subplot(5,10,i+1)plt.xticks([])plt.yticks([])plt.grid(False)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
((60000, 28, 28, 1), (10000, 28, 28, 1), (60000,), (10000,))
#构建CNN网络模型
model = models.Sequential([layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)),layers.MaxPooling2D((2,2)),layers.Conv2D(64,(3,3),activation='relu'),layers.MaxPool2D((2,2)),layers.Flatten(),layers.Dense(64,activation='relu'),layers.Dense(10)
])
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 26, 26, 32) 320
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 13, 13, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 11, 11, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 5, 5, 64) 0
_________________________________________________________________
flatten (Flatten) (None, 1600) 0
_________________________________________________________________
dense (Dense) (None, 64) 102464
_________________________________________________________________
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 121,930
Trainable params: 121,930
Non-trainable params: 0
_________________________________________________________________2022-01-07 23:45:52.268745: I tensorflow/core/platform/cpu_feature_guard.cc:145] This TensorFlow binary is optimized with Intel(R) MKL-DNN to use the following CPU instructions in performance critical operations: SSE4.1 SSE4.2
To enable them in non-MKL-DNN operations, rebuild TensorFlow with the appropriate compiler flags.
2022-01-07 23:45:52.275905: I tensorflow/core/common_runtime/process_util.cc:115] Creating new thread pool with default inter op setting: 8. Tune using inter_op_parallelism_threads for best performance.
#编译模型
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy']
)
#训练模型
history = model.fit(train_images,train_labels,epochs=10,validation_data=(test_images,test_labels))
Train on 60000 samples, validate on 10000 samples
Epoch 1/10
60000/60000 [==============================] - 138s 2ms/sample - loss: 0.1428 - accuracy: 0.9568 - val_loss: 0.0579 - val_accuracy: 0.9809
Epoch 2/10
60000/60000 [==============================] - 134s 2ms/sample - loss: 0.0456 - accuracy: 0.9861 - val_loss: 0.0388 - val_accuracy: 0.9877
Epoch 3/10
60000/60000 [==============================] - 132s 2ms/sample - loss: 0.0328 - accuracy: 0.9897 - val_loss: 0.0304 - val_accuracy: 0.9902
Epoch 4/10
60000/60000 [==============================] - 131s 2ms/sample - loss: 0.0232 - accuracy: 0.9922 - val_loss: 0.0301 - val_accuracy: 0.9897
Epoch 5/10
60000/60000 [==============================] - 134s 2ms/sample - loss: 0.0176 - accuracy: 0.9943 - val_loss: 0.0325 - val_accuracy: 0.9894
Epoch 6/10
60000/60000 [==============================] - 134s 2ms/sample - loss: 0.0135 - accuracy: 0.9956 - val_loss: 0.0307 - val_accuracy: 0.9907
Epoch 7/10
60000/60000 [==============================] - 134s 2ms/sample - loss: 0.0119 - accuracy: 0.9961 - val_loss: 0.0319 - val_accuracy: 0.9905
Epoch 8/10
60000/60000 [==============================] - 134s 2ms/sample - loss: 0.0086 - accuracy: 0.9973 - val_loss: 0.0327 - val_accuracy: 0.9905
Epoch 9/10
60000/60000 [==============================] - 132s 2ms/sample - loss: 0.0080 - accuracy: 0.9974 - val_loss: 0.0296 - val_accuracy: 0.9918
Epoch 10/10
60000/60000 [==============================] - 130s 2ms/sample - loss: 0.0065 - accuracy: 0.9979 - val_loss: 0.0314 - val_accuracy: 0.9911
#预测
plt.imshow(test_images[1])
<matplotlib.image.AxesImage at 0x7fd441a74550>
#输出测试集中第一张图片的预测结果
pre = model.predict(test_images)
pre[1]
array([-7.576601 , 0.24191436, 22.48119 , -7.913903 , -6.1873503 ,-9.024768 , -0.274709 , -1.0671589 , 3.3178928 , -9.065157 ],dtype=float32)
网络结构
各层的作用
- 输入层:用于将数据输入到训练网络
- 卷积层:使用卷积核提取图片特征
- 池化层:进行下采样,用更高层的抽象表示图像特征
- Flatten层:将多维的输入一维化,常用在卷积层到全连接层的过渡
- 全连接层:起到“特征提取器”的作用
- 输出层:输出结果
01-mnist数字识别相关推荐
- 写给初学者的深度学习教程之 MNIST 数字识别
一般而言,MNIST 数据集测试就是机器学习和深度学习当中的"Hello World"工程,几乎是所有的教程都会把它放在最开始的地方.这是因为,这个简单的工程包含了大致的机器学习流程,通过练习这个工程 ...
- TensorFlow解决MNIST数字识别问题
TensorFlow解决MNIST数字识别问题 废话 这个MNIST数字识别问题是我实现的第一个神经网络,虽然过程基本上都是对着书上的代码敲,但还是对神经网络的训练过程有了一定的了解,同时也复习了前面 ...
- 深度学习算法优化系列十八 | TensorRT Mnist数字识别使用示例
1. 前言 上一节对TensorRT做了介绍,然后科普了TensorRT优化方式以及讲解在Windows下如何安装TensorRT6.0,最后还介绍了如何编译一个官方给出的手写数字识别例子获得一个正确 ...
- 【TensorFlow】笔记3:MNIST数字识别问题
文章目录 一.MNIST数据处理 1.数据集概述 2.数据获取 二.神经网络模型训练及不同模型结果对比 1.TF训练神经网络 2.使用验证数据判断模型效果 3.不同模型效果比较 三.变量管理 1.tf ...
- 深度学习笔记:Tensorflow手写mnist数字识别
文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 上一讲笔者和大家一起学习了如何使用 Te ...
- tensorflow00:windows下训练并测试MNIST数字识别详细笔记
1.导入库 # 说明:由于windows下运行与tensorflow相关的程序会出现".......supports AVX2....."的 Warnning信息十分碍眼,于是在我 ...
- TensorFlow学习笔记之四(MNIST数字识别)
文章目录 1. 关于MNIST数据集 2. 前向传播确定网络结构 2.1 涉及的方法 1. 关于MNIST数据集 数据集和input_data文件 有6万张28*28像素点的0~9手写数字图片和标签, ...
- 运用cnn实现手写体(mnist)数字识别_实现 MNIST 手写数字识别
1. MNIST 数据集加载 MNIST 数据集可以从MNIST官网下载.也可以通过 Tensorflow 提供的 input_data.py进行载入. 由于上述方法下载数据集比较慢,我已经把下载好的 ...
- 利用Python对MNIST手写数据集进行数字识别(初学者入门级)
利用Python对MNIST手写数据集进行数字识别 一.编程环境Jupyter Notebook Jupyter Notebook,之前被称为IPython notebook,是一个交互式的Web应用 ...
- MNIST数据集实现手写数字识别(基于tensorflow)
------------先看看别人的博客--------------------- Tensorflow 实现 MNIST 手写数字识别 用这个的代码跑通了 使用Tensorflow和 ...
最新文章
- 学习原来可以如此简单
- 告别硬编码,SpringBoot实现动态增删启停定时任务
- Sublime Text 2
- Linux常用系统管理命令(top、free、kill、df)
- Qt动态多语言的实现(VS2012开发)
- 《精通Hadoop》:第 1 章 Hadoop 2.X
- 子元素是字典列表转成字典
- 关于页面布局间距使用的经验之谈
- django前端模板循环多个list
- [PyTorch] 保存模型和恢复模型
- SpringCloud 应用在 Kubernetes 上的最佳实践(二):部署篇 (开发部署)
- 启动pe系统找不到计算机硬盘分区,pe系统看不到硬盘分区_pe系统里看不到硬盘...
- 苹果涨价就衰,iPhoneSE3再次证明这一规律
- 实现左侧菜单二级下拉菜单,
- ajax nginx 转发 sessionid_百度、京东、网易、腾讯、淘宝等大厂都在用的Web服务器Nginx详解
- E聊SDK-简介(1): 介绍
- 泰坦尼克号的逻辑回归模型
- centos关闭自动锁屏
- SuperMap iClient3D for WebGL教程- 淹没分析
- 电化学传感器(3)---气体采样系统