作者 | 张强
今天我们要训练的模型是基于Keras框架,来训练FashionMNIST图像识别模型,该模型和MNIST是一样的分类数量。
MNIST
的分类是0到9的十个数字
FashionMNIST
的分类是这十个分类:'t_shirt', 'trouser', 'pullover', 'dress', 'coat', 'sandal', 'shirt', 'sneaker', 'bag', 'ankle_boots'
平时我们在训练AI模型时,都是在CPU或者GPU服务器上,今天在此示例中,我们尝试使用tf.keras在Google Cloud TPU上训练基于FashionMNIST数据集的模型。该模型在Cloud TPU上训练1个Epoch,大约需要2分钟运行完毕。
学习目标
在本Jupyter Notebook中,我们将学习:
构建标准的卷积网络,在Keras的每一层之间有3层,具有Dropout和批量标准化操作。
- 使用yield来创建数据集的生成器和fit_generator来训练模型。
- 运行模型预测以查看模型如何预测fashion类别并输出结果。
TPU位于Google Cloud中,为获得最佳性能,可以直接从Google云端存储(GCS)读取数据,让我们一起看看代码是如何编写的。
获取数据
首先使用tf.keras.datasets下载Fashion MNIST数据集,如下所示:
定义模型
以下示例使用标准conv-net,每层都有Dropout和批量标准化:
输出的模型概要如下:
在TPU上训练
要开始训练,请在TPU上构建模型,然后进行编译。
以下代码演示了如何使用生成器函数和fit_generator来训练模型。 或者,您可以将x_train和y_train传递给tpu_model.fit(),代码如下:
测试结果(Inference)
现在您已经完成了训练,看看模型如何预测fashion类别,如下代码:
输出的预测效果如图所示:
课外阅读
在Google云端平台上,除了预先配置的深度学习虚拟机上提供的GPU和TPU之外,还可以找到用于训练自定义模型的AutoML(测试版),无需编写代码在Cloud ML Engine上,就可以运行并行训练模型,超参数调整,以及强大的分布式硬件上的自定义模型。
代码已经上传到了Github:
https://github.com/VictorZhang2014/paddle_vs_tensorflow_vs_keras/tree/master/fashion_mnist