Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >毕业设计(基于TensorFlow的深度学习与研究)之完结篇

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

作者头像
石璞东
修改于 2020-04-22 11:52:52
修改于 2020-04-22 11:52:52
4.6K00
代码可运行
举报
文章被收录于专栏:石璞东 | haha石璞东 | haha
运行总次数:0
代码可运行

前言

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

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

毕设系列推文总体安排

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

图 1.1 毕设相关推文
图 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进行部署测试)

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

图 2.1 第1-2章知识结构
图 2.1 第1-2章知识结构
图 2.2 第3章知识结构
图 2.2 第3章知识结构
图 2.3 第4-5章知识结构
图 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列的图像)

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"]

效果如下图所示:

图 2.4 1*5图像展示
图 2.4 1*5图像展示
图 2.5 2*5图像展示
图 2.5 2*5图像展示
图 2.6 3*5图像展示
图 2.6 3*5图像展示

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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")
 ])

我们通过如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model.summary()

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

图 2.7 查看模型
图 2.7 查看模型

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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))

其最终结果如下所示:

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

以上就是毕设最终篇的所有内容,总算是更完了,可以歇一阵了,其他毕设相关内容在答辩之后我会加快更新滴~

声明

更多内容请移步我的公众号平台hahaCoder或者个人网站http://www.shipudong.com进行查看。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 hahaCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
毕业设计(基于TensorFlow的深度学习与研究)之核心篇CNN-AlexNet详解
在本文中,我将会对我本科毕业设计的核心AlexNet卷积神经网络进行详细的讲解,我将会分成三个部分来进行阐述:
石璞东
2020/04/21
1.4K0
毕业设计(基于TensorFlow的深度学习与研究)之核心篇CNN-AlexNet详解
毕业设计之「测试实验及结果分析」(一)
在毕设系列推文的第二章中我们详细介绍了TensorFlow的一些基础知识(TensorFlow 2.0 概述);在第三章(毕业设计之「神经网络与深度学习概述」 (一)、毕业设计之「神经网络与深度学习概述」(二))中对神经网络与深度学习做了简单的概述(主要介绍本章节中完成两个项目所用的一些基础概念)包括激活函数、梯度下降、损失函数、softmax算法等;并且通过简单描述全连接神经网络的不足,详细介绍了卷积神经网络的相关概念。
石璞东
2020/07/29
8670
毕业设计之「测试实验及结果分析」(一)
《深度学习初探:使用TensorFlow和Keras构建你的第一个神经网络》
🐯 猫头虎博主 为您带来:深度学习正在改变我们看待计算机视觉、自然语言处理等领域的方式。如何入门并构建您的第一个模型呢?本文将为您详解如何使用TensorFlow和Keras两大神器轻松构建神经网络。 深度学习入门、TensorFlow基础、Keras教程、构建神经网络。
猫头虎
2024/04/09
2070
《深度学习初探:使用TensorFlow和Keras构建你的第一个神经网络》
毕业设计之「神经网络与深度学习概述」(二)
首先,来说一下卷积的概念,从数学角度来看,可以简单的认为卷积是一种数学运算,在通信领域,卷积也被应用在滤波上,因此通常将卷积和滤波同等看待,卷积核也经常被称为滤波器。
石璞东
2020/07/08
6590
tensorfow2.0实例讲解1-衣服分类
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
锦小年
2019/10/22
6040
TensorFlow 基础学习 - 2
让我们来看这样一个场景,让计算机识别不同的服装用品(有提包、鞋子、裤子等10类物品)。我们将用包含10种不同类型的物品图片的数据集来训练一个神经元网络,实现分类。
叉叉敌
2021/12/06
4520
TensorFlow 基础学习 - 2
毕业设计之「测试实验及结果分析」(二)
在本例中,我们将使用通过Python爬虫技术获取的不具备版权的3762张样本图片,包括5个类别:其中daisy(菊花)633张,dandelion(蒲公英)898张,roses(玫瑰)641张,sunflowers(太阳花)699张,tulips(郁金香)799张;
石璞东
2020/07/14
6400
毕业设计之「测试实验及结果分析」(二)
Tensorflow技术点整理
这里我们可以看到,这些图像数据集都是28*28的单通道图片。我们将这些数据集分成了55000个训练数据集,5000个验证数据集以及10000个测试数据集。现在我们再来看一下这些数据集的分类类型
算法之名
2021/10/22
5650
【TensorFlow2.0】以后我们再也离不开Keras了?
在TensorFlow2.0中,Keras是一个用于构建和训练深度学习模型的高阶 API。因此如果你正在使用TensorFow2.0,那么使用Keras构建深度学习模型是您的不二选择。在Keras API中总共有如下三大块:
用户1508658
2019/07/28
1.2K0
【完结】TensorFlow2.0 快速上手手册
import tensorflow as tf a = tf.constant([1,2,3]) b = tf.constant([4,5,6]) print(a+b)
用户1508658
2019/07/25
3.9K0
【完结】TensorFlow2.0 快速上手手册
TensorFlow 基础学习 - 3 CNN
抓住它的核心思路,即通过卷积操作缩小了图像的内容,将模型注意力集中在图像特定的、明显的特征上。
叉叉敌
2021/12/06
5130
TensorFlow 基础学习 - 3 CNN
图像分类入门,轻松拿下90%准确率 | 教你用Keras搞定Fashion-MNIST
这篇教程会介绍如何用TensorFlow里的tf.keras函数,对Fashion-MNIST数据集进行图像分类。
量子位
2018/07/20
2K0
Fashion_mnist 数据集 图像识别
fashion_mnist 和 mnist 一样,都是深度学习入门用的简单数据集,两者的图片尺寸一样,都是28x28。fashion_mnist的训练集有6万张图片,测试集有1万张图片,全是衣服、鞋、包包之类的图片,共10个类别:
用户6021899
2020/01/17
1.4K0
Fashion_mnist 数据集 图像识别
TensorFlow2.0(9):神器级可视化工具TensorBoard
TensorBoard是TensorFlow中的又一神器级工具,想用户提供了模型可视化的功能。我们都知道,在构建神经网络模型时,只要模型开始训练,很多细节对外界来说都是不可见的,参数如何变化,准确率怎么样了,loss还在减小吗,这些问题都很难弄明白。但是,TensorBoard通过结合web应用为我们提供了这一功能,它将模型训练过程的细节以图表的形式通过浏览器可视化得展现在我们眼前,通过这种方式我们可以清晰感知weight、bias、accuracy的变化,把握训练的趋势。
统计学家
2019/12/25
3.7K0
Basic classification: Classify images of clothing
This guide trains a neural network model to classify images of clothing, like sneakers and shirts.
XianxinMao
2021/07/27
4040
使用tensorflow创建一个简单的神经网络
本文是对tensorflow官方入门教程的学习和翻译,展示了创建一个基础的神经网络模型来解决图像分类问题的过程。具体步骤如下
生信修炼手册
2021/07/06
1.1K0
使用tensorflow创建一个简单的神经网络
Tensorflow2——模型的保存和恢复
1)整个模型保存到一个文件中,其中包含权重值,模型配置以及优化器的配置,这样,您就可以为模型设置检查点,并稍后从完全相同的状态进行训练,而无需访问原始代码 2)在keras中保存完全可以正常的使用模型非常有用,您可以在tensorflow.js中加载他们,然后在网络浏览器中训练和运行它们 3)keras中使用HDF5标准提供基本的保存格式
Albert_xiong
2021/06/21
1.1K0
Tensorflow2——模型的保存和恢复
Tensorflow2.0 教程-初识 TF2.0
TensorFlow 是谷歌基于 DistBelief 进行研发的第二代人工智能学习系统,自 2015 年问世,并在去年 11 月迎来三周岁生日,已经发展为世界上最受欢迎和被广泛采用的机器学习平台之一。
机器视觉CV
2019/07/14
2K0
MOOC TensorFlow入门实操课程代码回顾总结(一)
0 T-shirt/top(体恤) 1 Trouser(裤子) 2 Pullover(套头衫) 3 Dress(连衣裙) 4 Coat(外套) 5 Sandal(凉鞋) 6 Shirt(衬衫) 7 Sneaker(运动鞋) 8 Bag(袋子) 9 Ankle boot(短靴)
荣仔_最靓的仔
2022/01/05
7400
MOOC TensorFlow入门实操课程代码回顾总结(一)
TensorFlow 2.0 Tutorial: 4 - 几个常用技术
下面这个过程是一个最基础的模型建立到评估到预测的流程, 几乎都是遵循这样的一个过程,
杨熹
2019/04/22
5710
相关推荐
毕业设计(基于TensorFlow的深度学习与研究)之核心篇CNN-AlexNet详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验