毕业设计(基于TensorFlow的深度学习与研究)之完结篇

简介: 本文是我的毕业设计基于TensorFlow的深度学习与研究的完结篇,在本篇推文中,我将分为三个部分去写:第一部分是对我毕业设计系列推文的总体安排;第二部分是对我毕业设计的总结概括;第三部分我将引入一个入门级的案例(借助fashion_mnist数据集),一方面是帮助初学者对深度学习和卷积神经网络有一定的了解,另一方面是此案例与我毕设中的一个案例相似度较高(另外,我毕设中涉及的两个案例的源代码我将在答辩之后更新到Github上)。

前言


本文是我的毕业设计基于TensorFlow的深度学习与研究的完结篇,在本篇推文中,我将分为三个部分去写:


  • 第一部分是对我毕业设计系列推文的总体安排;
  • 第二部分是对我毕业设计的总结概括;
  • 第三部分我将引入一个入门级的案例(借助fashion_mnist数据集),一方面是帮助初学者对深度学习和卷积神经网络有一定的了解,另一方面是此案例与我毕设中的一个案例相似度较高(另外,我毕设中涉及的两个案例的源代码我将在答辩之后更新到Github上)。



毕设系列推文总体安排



从毕业设计开始到现在,我总共发过两篇与其相关的推文,第一篇是于2020.01.13发布的TensorFlow环境搭建,第二篇是于2020.03.18发布的毕业设计(基于TensorFlow的深度研究与实现)之番外篇大家可以去我的公号翻一下,等到我的所有毕设相关的推文更新完之后,我会做下整理,方便大家查阅。


微信图片_20220610221029.png

图 1.1 毕设相关推文


毕设系列推文总体安排如下(打 为已完成内容,打 × 为未完成内...ing 为正在编写的内容):


  1. TensorFlow环境搭建(1篇)
  2. 基础知识内容(包括TensorFlow 2.0简单介绍、卷积神经网络基础介绍,预估2~3篇)×
  3. 项目案例讲解及代码展示(两个案例:利用AlexNet完成MNIST手写字的识别、利用AlexNet完成五种花的分类,预估2篇)×
  4. 毕业设计(基于TensorFlow的深度研究与实现)之番外篇(内容涉及通过华为云AI开发平台ModelArts完成五种花分类项目案例的部署测试及滑动验证码缺口识别)
  5. 毕设最终篇(内容涉及系列推文总体安排、项目总结以及初学者入门深度学习的一个demo讲解)...ing



毕设仿真项目总结


我的毕业设计总体架构可以分为三大板块:



  1. 相关知识了解(包括英文文献翻译、第一章绪论部分、第五章总结与期望部分、致谢部分、参考文献部分等,这些部分内容大都与仿真项目关系不大,但是这些都是为更好完成仿真项目必要的准备工作)
  2. 基础知识部分(包括TensorFlow 2.0中对高阶API tf.keras.models的使用方法的介绍以及使用Sequential按顺序构建模型序列的介绍)。
  3. 项目仿真部分(主要包括两个案例:第一个是利用AlexNet搭建卷积神经网络完成MNIST手写字的识别,要求准确率在95%,且规定Conv=3层、MaxPool=2层、ReLU=3层,Dense=1层,连接神经元个数为1024,最后一个全连接层使用softmax函数;第二个案例是使用AlexNet标准网络结构完成五种花分类的识别,并通过ModelArts进行部署测试)


以下是我的毕业设计的目录梗概部分:


微信图片_20220610221056.png

图 2.1 第1-2章知识结构


微信图片_20220610221101.png

图 2.2 第3章知识结构


微信图片_20220610221105.png

图 2.3 第4-5章知识结构



入门级案例演示



上述两部分内容是我对我毕设系列推文的一个总结及下一阶段发推文的安排,并不涉及太多知识层面的讲解,接下来我将通过一个入门级案例来简单介绍一下相关的知识。


案例内容概览:

在本案例中我们使用TensorFlow 2.0版本中的高阶API tf.keras.modelstf.keras.datasets并通过Sequential按顺序构建神经网络(最简单的神经网络,代码中构建了隐藏层为三个全连接层的简单神经网络)来完成对fashion_mnist数据集的训练。其中我们损失函数使用的是sparse多分类交叉熵损失函数(sparse_categorical_crossentropy),优化器使用的是随机梯度下降法(sgd),前两个全连接层后面均有sigmoid损失函数,且最后一个全连接层后面接softmax损失函数。


写代码咯:


我们使用该数据集的前5000张作为验证集图片,其余图片均作训练集,借助matplotlib中的函数先展示这个数据中的15张图片(3*5,前3行、5列的图像)


展示图像的代码如下所示:

def show_imgs(n_rows,n_cols,x_data,y_data,class_names):
    assert len(x_data) == len(y_data)
    assert n_rows * n_cols < len(x_data)
    plt.figure(figsize=(n_cols*1.4,n_rows*1.6))
    for row in range(n_rows):
        for col in range(n_cols):
            index = n_cols * row +col
            plt.subplot(n_rows,n_cols,index+1)
            plt.imshow(x_data[index],cmap="binary",interpolation="nearest")
            plt.axis("off")
            plt.title(class_names[y_data[index]])
        plt.show()
class_names = ["T-shirt","Trouser","Pullover","Dress","Coat","Sandal","Shirt","Sneaker","Bag","Ankle boot"]

效果如下图所示:


微信图片_20220610221116.png

图 2.4 1*5图像展示



微信图片_20220610221121.png

图 2.5 2*5图像展示



微信图片_20220610221126.png

图 2.6 3*5图像展示


image.gif


了解了fashion_mnist数据集的大概情况之后,我们来通过Sequential构建模型,代码如下:



model = tf.keras.models.Sequential([
     tf.keras.layers.Flatten(input_shape = [28,28]),
     tf.keras.layers.Dense(300,activation="relu"),
     tf.keras.layers.Dense(100,activation="relu"),
     tf.keras.layers.Dense(10,activation="softmax")
 ])

我们通过如下代码:


model.summary()


在控制台瞅瞅我们搭建的模型,如下图所示:


微信图片_20220610221132.png

图 2.7 查看模型


完成之后,我们开始对数据集进行训练,迭代次数10次,默认batch_size=32,数据集不算太大,我们就在本机cpu跑就行了(小伙伴们当然可以买一块GPU来运算,但是如果和我一样穷的话,建议大家像这种入门级的demo跑在本机就可以了,稍微数据量大点的大家可以借助Google Cloud或者AWS云平台托管运算,更大数据量的还请各位小伙伴少吃点肉把钱节省下来买GPU)所有代码如下:


import tensorflow as tf
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train_all,y_train_all),(x_test,y_test) = fashion_mnist.load_data()
x_valid,x_train = x_train_all[:5000],x_train_all[5000:]
y_valid,y_train = y_train_all[:5000],y_train_all[5000:]
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape = [28,28]),
    tf.keras.layers.Dense(300,activation="sigmoid"),
    tf.keras.layers.Dense(100,activation="sigmoid"),
    tf.keras.layers.Dense(10,activation="softmax")
])
model.compile(loss = "sparse_categorical_crossentropy",optimizer="sgd",metrics=["accuracy"])
history = model.fit(x_train,y_train,epochs = 10 ,validation_data = (x_valid,y_valid))

其最终结果如下所示:


微信图片_20220610221137.png


其最终识别率在80%左右,我的毕设中关于使用AlexNet识别MNIST的例子其准确率在98%左右,关于五种花的识别的准确率在76%(受限于样本集个数)。总体来说,识别率较高,若小伙伴们还想继续提高识别率,建议在原有的基础上改善隐藏层结构(代码中隐藏层的结构过于简单)。

相关文章
|
1月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
将Keras训练好的.hdf5模型转换为TensorFlow的.pb模型,然后再转换为TensorRT支持的.uff格式,并提供了转换代码和测试步骤。
83 3
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
|
25天前
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
33 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
5天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
5天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
21天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
30天前
|
机器学习/深度学习 搜索推荐 算法
深度学习-点击率预估-研究论文2024-09-14速读
深度学习-点击率预估-研究论文2024-09-14速读
45 0
|
1月前
|
机器学习/深度学习 移动开发 TensorFlow
深度学习之格式转换笔记(四):Keras(.h5)模型转化为TensorFlow(.pb)模型
本文介绍了如何使用Python脚本将Keras模型转换为TensorFlow的.pb格式模型,包括加载模型、重命名输出节点和量化等步骤,以便在TensorFlow中进行部署和推理。
76 0
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
108 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别