广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Tensorflow2.1MNIST图像分类实现思路分析
  • 761
分享到

Tensorflow2.1MNIST图像分类实现思路分析

Tensorflow2.1MNIST图像分类TensorflowMNIST 2022-11-21 22:11:35 761人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言主要思路和实现(1) 加载数据,处理数据(2) 使用 keras 搭建深度学习模型(3) 定义损失函数(4) 配置编译模型(5) 使用训练数据训练模型(6) 使用测试数据评估

前言

之前工作中主要使用的是 Tensorflow 1.15 版本,但是渐渐跟不上工作中的项目需求了,而且因为 2.x 版本和 1.x 版本差异较大,所以要专门花时间学习一下 2.x 版本,本文作为学习 Tensorflow 2.x 版本的开篇,主要介绍了使用 cpu 版本的 Tensorflow 2.1 搭建深度学习模型,完成对于 MNIST 数据的图片分类的任务。

主要思路和实现

(1) 加载数据,处理数据

这里是要导入 tensorflow 的包,前提是你要提前安装 tensorflow ,我这里为了方便直接使用的是 cpu 版本的 tensorflow==2.1.0 ,如果是为了学习的话,cpu 版本的也够用了,毕竟数据量和模型都不大。

import tensorflow as tf

这里是为了加载 mnist 数据集,mnist 数据集里面就是 0-9 这 10 个数字的图片集,我们要使用深度学习实现一个模型完成对 mnist 数据集进行分类的任务,这个项目相当于 java 中 hello world 。

mnist = tf.keras.datasets.mnist

这里的 (x_train, y_train) 表示的是训练集的图片和标签,(x_test, y_test) 表示的是测试集的图片和标签。

(x_train, y_train), (x_test, y_test) = mnist.load_data()

每张图片是 28*28 个像素点(数字)组成的,而每个像素点(数字)都是 0-255 中的某个数字,我们对其都除 255 ,这样就是相当于对这些图片的像素点值做归一化,这样有利于模型加速收敛,在本项目中执行本操作比不执行本操作最后的准确率高很多,在文末会展示注释本行情况下,模型评估的指标结果,大家可以自行对比差异。

x_train, x_test = x_train / 255.0, x_test / 255.0

(2) 使用 keras 搭建深度学习模型

这里主要是要构建机器学习模型,模型分为以下几层:

  • 第一层要接收图片的输入,每张图片是 28*28 个像素点组成的,所以 input_shape=(28, 28)
  • 第二层是一个输出 128 维度的全连接操作
  • 第三层是要对第二层的输出随机丢弃 20% 的 Dropout 操作,这样有利于模型的泛化

第四层是一个输出 10 维度的全连接操作,也就是预测该图片分别属于这十种类型的概率

 model = tf.keras.models.Sequential([
   tf.keras.layers.Flatten(input_shape=(28, 28)),
   tf.keras.layers.Dense(128, activation='relu'),
   tf.keras.layers.Dropout(0.2),
   tf.keras.layers.Dense(10)
 ])

(3) 定义损失函数

这里主要是定义损失函数,这里的损失函数使用到了 SparseCateGoricalCrossentropy ,主要是为了计算标签和预测结果之间的交叉熵损失。

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

(4) 配置编译模型

这里主要是配置和编译模型,优化器使用了 adam ,要优化的评价指标选用了准确率 accuracy ,当然了还可以选择其他的优化器和评价指标。

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

(5) 使用训练数据训练模型

这里主要使用训练数据的图片和标签来训练模型,将整个训练样本集训练 5 次。

model.fit(x_train, y_train, epochs=5) 

训练过程结果输出如下:

Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 3s 43us/sample - loss: 0.2949 - accuracy: 0.9144
Epoch 2/5
60000/60000 [==============================] - 2s 40us/sample - loss: 0.1434 - accuracy: 0.9574
Epoch 3/5
60000/60000 [==============================] - 2s 36us/sample - loss: 0.1060 - accuracy: 0.9676
Epoch 4/5
60000/60000 [==============================] - 2s 31us/sample - loss: 0.0891 - accuracy: 0.9721
Epoch 5/5
60000/60000 [==============================] - 2s 29us/sample - loss: 0.0740 - accuracy: 0.9771
10000/10000 - 0s - loss: 0.0744 - accuracy: 0.9777

(6) 使用测试数据评估模型

这里主要是使用测试数据中的图片和标签来评估模型,verbose 可以选为 0、1、2 ,区别主要是结果输出的形式不一样,嫌麻烦可以不设置

model.evaluate(x_test,  y_test, verbose=2)

评估的损失值和准确率如下:

[0.07444974237508141, 0.9777]

(7) 展示不使用归一化的操作的训练和评估结果

在不使用归一化操作的情况下,训练过程输出如下:

Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 3s 42us/sample - loss: 2.4383 - accuracy: 0.7449
Epoch 2/5
60000/60000 [==============================] - 2s 40us/sample - loss: 0.5852 - accuracy: 0.8432
Epoch 3/5
60000/60000 [==============================] - 2s 36us/sample - loss: 0.4770 - accuracy: 0.8724
Epoch 4/5
60000/60000 [==============================] - 2s 34us/sample - loss: 0.4069 - accuracy: 0.8950
Epoch 5/5
60000/60000 [==============================] - 2s 32us/sample - loss: 0.3897 - accuracy: 0.8996
10000/10000 - 0s - loss: 0.2898 - accuracy: 0.9285

评估结果输入如下:

[0.2897613683119416, 0.9285]

所以我们通过和上面的进行对比发现,不进行归一化操作,在训练过程中收敛较慢,在相同 epoch 的训练之后,评估的准确率和损失值都不理想,损失值比第(6)步操作的损失值大,准确率比第(6)步操作低 5% 左右。

以上就是Tensorflow2.1 MNIST图像分类实现思路分析的详细内容,更多关于Tensorflow2.1 MNIST图像分类的资料请关注编程网其它相关文章!

--结束END--

本文标题: Tensorflow2.1MNIST图像分类实现思路分析

本文链接: https://www.lsjlt.com/news/173332.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Tensorflow2.1MNIST图像分类实现思路分析
    目录前言主要思路和实现(1) 加载数据,处理数据(2) 使用 keras 搭建深度学习模型(3) 定义损失函数(4) 配置编译模型(5) 使用训练数据训练模型(6) 使用测试数据评估...
    99+
    2022-11-21
    Tensorflow2.1 MNIST图像分类 Tensorflow MNIST
  • php和ajax实现图片上传的思路分析
    这篇文章将为大家详细讲解有关php和ajax实现图片上传的思路分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   整体思路:   1、创建input设置type=...
    99+
    2022-10-19
    php ajax
  • Android实现换肤的两种思路分析
    本文分析了Android实现换肤的两种思路。分享给大家供大家参考,具体如下: 这里来了解换肤实现及不同方案的差异和使用场合。 一、从功能上划分 1) 软件内置多个皮肤,用户不能...
    99+
    2022-06-06
    Android
  • matlab图像滤波实例分析
    这篇“matlab图像滤波实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“matlab图像滤波实例分析”文章吧。mat...
    99+
    2023-07-05
  • openCV实现图像分割
    本次实验为大家分享了openCV实现图像分割的具体实现代码,供大家参考,具体内容如下 一.实验目的 进一步理解图像的阈值分割方法和边缘检测方法的原理。 掌握图像基本全局阈值方法和最大...
    99+
    2022-11-12
    openCV 图像分割
  • Pytorch中如何实现病虫害图像分类
    本篇文章给大家分享的是有关Pytorch中如何实现病虫害图像分类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、pytorch框架1.1、概念PyTorch是一个开源的Pyt...
    99+
    2023-06-22
  • Vue3中的执行流程思路分析-流程图
    目录一. 前言二. Vue3 思路分析1. createRender(options)2. createApp3. app.mount(‘#app’)4. r...
    99+
    2022-12-03
    Vue3执行流程 Vue3流程图 Vue3执行流程思路
  • Python Pytorch图像检索实例分析
    这篇文章主要介绍“Python Pytorch图像检索实例分析”,在日常操作中,相信很多人在Python Pytorch图像检索实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pyt...
    99+
    2023-06-29
  • OpenCV图像算法实现图像切分图像合并示例
    目录将一张图片切分成多个小图片并将小图片合并为原图图像切分图像合并验证友情提示将一张图片切分成多个小图片并将小图片合并为原图 最近用到一个功能,需要将一张原图切分成多个小图像,然后对...
    99+
    2022-11-13
    OpenCV切分合并图像算法 OpenCV图像算法
  • OpenCV图像算法怎么实现图像切分图像合并
    本篇内容介绍了“OpenCV图像算法怎么实现图像切分图像合并”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将一张图片切分成多个小图片并将小图...
    99+
    2023-06-30
  • python OpenCV图像金字塔实例分析
    这篇“python OpenCV图像金字塔实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python&nb...
    99+
    2023-07-02
  • Java实现图像分割功能
    使用Java实现图像分割,供大家参考,具体内容如下 为减少动画制作过程中的IO操作,我们可以使用连续动画来改善动画播放效率。 假如我们有如下的一张图像: 如果我们对图像中的每张小图...
    99+
    2022-11-12
    java 图像分割
  • 基于OpenCV实现图像分割
    本文实例为大家分享了基于OpenCV实现图像分割的具体代码,供大家参考,具体内容如下 1、图像阈值化 源代码: #include "opencv2/highgui/highgui...
    99+
    2022-11-12
    OpenCV 图像分割
  • Python怎么实现图像分割
    本篇内容介绍了“Python怎么实现图像分割”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法一import randomimpo...
    99+
    2023-06-29
  • OpenCV 图像分割实现Kmean聚类的示例代码
    目录1 Kmean图像分割2 流程3 实现1 Kmean图像分割 按照Kmean原理,对图像像素进行聚类。优点:此方法原理简单,效果显著。缺点:实践发现对于前景和背景颜色相近或者颜色...
    99+
    2022-11-13
    OpenCV Kmean聚类 OpenCV Kmean聚类图像分割
  • Pytorch深度学习之实现病虫害图像分类
    目录一、pytorch框架1.1、概念1.2、机器学习与深度学习的区别1.3、在python中导入pytorch成功截图二、数据集三、代码复现3.1、导入第三方库3.2、CNN代码3...
    99+
    2022-11-12
    Pytorch图像分类 Python Pytorch图像分类
  • Python深度学习pytorch实现图像分类数据集
    目录读取数据集读取小批量整合所有组件目前广泛使用的图像分类数据集之一是MNIST数据集。如今,MNIST数据集更像是一个健全的检查,而不是一个基准。 为了提高难度,我们将在接下来的章...
    99+
    2022-11-12
    Python深度学习 pytorch实现图像分类数据集
  • 使用Python怎么实现一个图像分类功能
    今天就跟大家聊聊有关使用Python怎么实现一个图像分类功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语...
    99+
    2023-06-14
  • Matlab图像处理的公路裂缝案例检测分析
    本篇内容主要讲解“Matlab图像处理的公路裂缝案例检测分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Matlab图像处理的公路裂缝案例检测分析”吧!一、简介1 案例背景随着国家对公路建设的...
    99+
    2023-06-29
  • tensorflow+k-means聚类简单实现猫狗图像分类的方法
    目录一、前言二、k-means聚类三、图像分类一、前言 本文使用的是 kaggle 猫狗大战的数据集:https://www.kaggle.com/c/dogs-vs-cats/da...
    99+
    2022-11-12
    tensorflow实现猫狗图像分类 tensorflow k-means聚类
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作