使用 10 行 Python 代码构建你的第一个深度学习模型
今天的我们的目标是使用最少的代码,实现一个深度学习模型,完成手写数字识别的功能。
1. 使用 TensorFlow 2.0
安装 TensorFlow2.0.
代码语言:javascript复制pip install tensorflow==2.0.0-rc0
然后呢,我们需要一个编辑器来写代码,强力推荐 Jupyter Notebook,简单易用方便调试。
代码语言:javascript复制$ pip install jupyter notebook
万事具备,只差写代码了。启动编辑器 Jupyter Notebook。
代码语言:javascript复制$ jupyter notebook
2. 数据集介绍
MNIST 是一个手写数字数据集,包含 60000 个训练样本,10000 个测试样本。数据内容是手写体的 0-9, 我们接下来的任务是使用 10 行代码实现神经网络,完成数字的识别。
3. 开始动手吧
3.1 导入 tensorflow 库
代码语言:javascript复制import tensorflow as tf
print(tf.__version__)
3.2 导入数据集
代码语言:javascript复制mnist = tf.keras.datasets.mnist # 导入数据 mnist数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data() # 将数据划分为训练数据和测试数据,其中x_train,x_test 为图像灰度值,y_train,y_test 为数据标签(指定数字具体是哪个)
x_train, x_test = x_train / 255.0, x_test / 255.0 # 输入的数据是图像的灰度值,对其进行归一化处理(灰度的最大值是255除以255)
3.3 分析数据集
代码语言:javascript复制x_train.shape # 查看训练数据大小,训练数据总数为60000的28*28图像
(60000, 28, 28)
import matplotlib.pyplot as plt
plt.imshow(x_train[0]) # 查看第一条数据的图像
代码语言:javascript复制y_train[0] # 查看第一条数据的标签
5
3.4 定义深度学习模型
代码语言:javascript复制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, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
3.5 训练模型
代码语言:javascript复制model.fit(x_train, y_train, epochs=5)
Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 5s 76us/sample - loss: 0.2923 - acc: 0.9144
Epoch 2/5
60000/60000 [==============================] - 4s 69us/sample - loss: 0.1389 - acc: 0.9592
Epoch 3/5
60000/60000 [==============================] - 4s 69us/sample - loss: 0.1059 - acc: 0.9681
Epoch 4/5
60000/60000 [==============================] - 4s 69us/sample - loss: 0.0875 - acc: 0.9729
Epoch 5/5
60000/60000 [==============================] - 4s 71us/sample - loss: 0.0747 - acc: 0.9765
10000/10000 - 0s - loss: 0.0780 - acc: 0.9765
3.6. 检验模型
利用之前的测试数据,对手写数字分类模型的效果进行检验。
代码语言:javascript复制model.evaluate(x_test, y_test, verbose=2)
[0.07800268666106276, 0.9765]
结果显示,刚才构建的模型分类准确率为 97.65%。至此你的第一个深度学习模型已经完成。
4. 作者介绍
本人曾就职于海康威视,目前从事数据开发,专注于 Python,人工智能,大数据领域。