文章目录
前言
这个系列文章主要记录使用keras框架来搭建深度学习模型的学习过程,其中有一些自己的想法和体会,主要学习的书籍是:Deep Learning with Python。使用的IDE是pycharm,需要安装keras以及相应的tensorflow的库。这篇文章主要是keras的介绍以及在keras框架下的mnist手写体数字识别程序的讲解。
一、keras的介绍及其操作使用
Keras 是一个 Python 深度学习框架,可以方便地定义和训练几乎所有类型的深度学习模型。Keras 最开始是为研究人员开发的,其目的在于快速实验。我们可以进入网站:主页 - Keras 中文文档查看keras内的配置,如图所示:
Keras的使用很简单上手,但是运行keras需要一个后端引擎,这里推荐使用tensorflow后端。
当我们对keras代码中有什么疑惑时,可以选择查看网页上对应的内容,然后对源代码进行查看。比如说我们选择查看常用数据集(Datasets):
接下来我们在本地文件路径下:C:\Users\Quiming\AppData\Roaming\Python\Python37\site-packages\keras\datasets,可以看到每个数据集的调用文件的源代码:
我们随便选择一个数据集文件打开,比如说mnist.py文件:
我们可以看到mnist里面的load_data函数具体是做什么,不一定要看懂,但是至少要知道在函数中输入的是什么,输出的是什么,这样更能方便于理解。
当我们不理解layers层时,我们可以查看layers文件下的编程文件:
所以当遇到keras中遇到语句不明白的或者错误但是找不到原因的,可以尝试去keras网页上或者本地文件中查看每个部分的信息;若只关注代码的使用,则需要明白函数的输入输出,以及这个函数大概做了什么事情。(三大利器:keras文档网页、源码以及baidu搜索)
二、手写题数字识别
1.介绍
在深度学习中的深度指的是数据模型中包含着的多个层次,而深度学习是对一堆数值做数学运算,但是这种数学运算是高纬度的,是大量的;在这些数学运算中,深度学习中的层通过反馈(比如后向传播)来对参数进行调整,然后再进行计算。如此反复数次,从而越来越接近我们所给出的正确结果。而在这个过程中,深度学习中的每个层所学习到的就是参数的具体数值。模型训练好以后,只需要一个输入,就能得到相应的输出。
对于深度学习的编程,以下是具体步骤(针对于keras框架):
1.对数据的预处理,如把图片数据变成数值矩阵,把离散的数据变成向量,把数据归一化等等,其目的是为了之后的学习;2.搭建网络框架,即输入层,隐藏层和输出层,深度学习所需要学习的参数在这些层里面;3.编译,即定义所需要用的优化器、损失函数等;4.循环训练,让网络一次又一次的运行,最后得到学习后的参数;5.测试训练的网络模型,在模型训练结束后,进行测试来验证其泛化能力。
本文中我们使用mnist数据集,这个数据集包含60000张训练图像和10000张测试图像,全部都是尺寸28*28像素的手写数字图片,如下图所示: