前言
MNIST 数字识别问题的全连接实现和LeNet-5实现。Keras是目前最为广泛的深度学习工具之一,底层可以支持Tensorflow、MXNet、CNTK、Theano。通过Keras我们深度学习过程基本可以简化为:数据处理、模型定义、模型训练。
tensorflow版本: 1.13.1
Keras版本:2.2.4
运行环境:Google CoLab(推荐大家去用下 )
全连接实现
样例来自于Tensorflow官方。
导入需要的包
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
数据处理
加载MNIST数据集,其中每张图片是28*28,每个点位的值是0-255.
将样本的数据从整型转换为浮点数
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# print(x_train[0]) 载入的是 0-255 的 28*28的图片
x_train, x_test = x_train / 255.0, x_test / 255.0
# print(x_train[0]) 的值为 0-1 加速后期优化
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 135s 12us/step
模型定义
建立Keras模型,通过一层一层的叠加
model = tf.keras.models.Sequential([
# Flatten 变成784 的输入
tf.keras.layers.Flatten(input_shape=(28, 28)),
# 512的全连接层
tf.keras.layers.Dense(512, activation=tf.nn.relu),
# droput 0.2