目录
► 前言
之前写了一篇“Python深度学习3:深度学习基本介绍”介绍深度学习的基本概念,这次我们就将概念转为实际程式码,使用Tensorflow Keras制作一个神经网路,用于MNIST手写辨识阿拉伯数字,在程式语言第一隻程式码为“Hello World”,而机器学习领域裡,MNIST就相当于“Hello World”。
► 开发环境
一般可以使用Python程式语言直接执行,但也可以使用jupyter Notebook来建构程式码,可以将程式码分段执行,当出现问题时可以非常方便的比对每一行程式码的执行结果,建构方式可以使用Anaconda软体,方便在每个系统执行,此外,也可以使用云端平台进行模型训练或学习,Google提供Colab平台,可以使用免费的GPU及TPU加速模型训练,内部系统为Linux系统,而且也安装大部分软件,方便使用者操作,介绍的部分可以参考“Python深度学习1:Google Colab介绍”及“Python深度学习2:Python基础语法介绍”。
► 程式码讲解
Step 1. 下载资料集(Dataset)
Step 2. 图像资料归一化(Normalization)
Step 3. 模型建立
Flatten Layer:将输入展平,不影响批量大小。图像摊平成1维阵列 28 x 28 的784特徵。
Dense Layer:全连接层,input 784个特徵连结为128个神经元。
Dropout Layer:训练过程随机丢弃20%的神经元。
Dense Layer:输出10个神经元,透过 softmax 激活函数,转成0~9的预测机率。
Step 4. 模型训练
Step 5. 模型评估
Step 6. 模型验证
先在小画家制作手写5,再将图片存放至Google云端硬碟。
从云端硬碟中取得图片路径,将图像归一化,并调整图像Size,即可使用model.predict函式推论图像,即可得到最后答案。
►小结
透过以上范例讲解,能够建立一个简单的数字辨识模型,相信对于机器学习有了一些了解,数字辨识为机器学习第一个模型,后续还有许多模型演算法可以学习,本篇博客到这裡,期待下一篇博客吧!