深度学习实验教程:使用MNIST数据集构建 TensorFlow 模型来识别手写数字( Watson Machine Learning )

本教程将指导您使用MNIST计算机视觉数据集,训练一个基于 TensorFlow 的深度学习模型来识别手写数字。 在本教程中,您将使用实验构建器对模型进行训练、部署和测试。

预备条件

IBM Software Hub 调度服务是实验运行所需的组件。

步骤概述

本教程介绍了如何使用 Watson Studio 中的实验构建器训练深度学习模型的基本步骤:

本教程不涉及分布式深度学习,也不涉及 Watson Machine Learning 的超参数优化功能。

预览教程

观看本视频,了解如何构建 TensorFlow 模型来识别手写数字。

本视频提供了学习本文档中的概念和任务的直观方法。

任务1:下载示例代码

从此处下载示例TensorFlow模型构建Python代码:tf_model_with_metrics_2_1.zip

tf_model_with_metrics_2_1.zip 压缩文件包含三个文件:

  • convolutional_network.py - 模型构建的 Python 代码
  • input_data.py - 一个用于读取 MNIST 数据文件的“辅助”文件
  • emetrics.py - 一个用于读取指标的“辅助”文件

该示例代码将下载运行训练所需的数据文件。

注:

  • 部署模型时,需要将模型保存到模型训练脚本中的必需目录中,并且该目录为 $RESULT_DIR/model ,其中 RESULT_DIR 是模型训练脚本可访问的环境变量。
  • 要监视训练进度和结果,您将需要在模型训练脚本中记录训练指标。 例如,使用可直接在模型训练脚本中使用的 EMetrics 模块中的 record 接口:
    from emetrics import EMetrics with EMetrics.open() as em:
    for epoch in range(0,total_epochs):
        # perform training for epoch
        # compute training metrics and assign to values train_metric1, train_metric2 etc
        em.record("training",epoch_num,{'metric1': train_metric1, 'metric2': train_metric2})
        # compute test metrics and assign to values test_metric1, test_metric2 etc
        # NOTE for these metrics use the group EMetrics.TEST_GROUP so that the service will recognize these metrics as computed on test/validation data
        em.record(EMetrics.TEST_GROUP,epoch_num,{'metric1': test_metric1, 'metric2': test_metric2})
    

任务2:训练模型

请按照以下步骤在项目中创建一个深度学习实验,以训练模型:

  1. 打开项目。
  2. 点击新建资产 > 构建深度学习实验
  3. 请为实验指定一个名称,并可选填描述。
  4. 添加模型定义。
    1. 指定名称和描述。

    2. 点击 “浏览” 上传示例代码, tf_model_with_metrics_2_1.zip

    3. 指定模型构建代码中使用的框架: tensorflow_rt24.1-py3.11

    4. 请指定 CPUGPU 作为资源类型。

    5. 设置硬件规格:例如, 1个通用GPU、1个CPU和 4GB 内存

    6. 将培训类型设置为单节点

    7. 设置执行命令,指定此命令以运行模型构建代码:

      convolutional_network.py --trainImagesFile train-images-idx3-ubyte.gz --trainLabelsFile train-labels-idx1-ubyte.gz --testImagesFile t10k-images-idx3-ubyte.gz --testLabelsFile t10k-labels-idx1-ubyte.gz --learningRate 0.001 --trainingIters 6000
      ```   1. Click **Create** to save the model definition.
      
  5. 点击 “创建并运行 ”。

任务3:监控培训进度和结果

按照以下步骤,在实验构建器的 “训练运行”选项卡中监控训练运行的进度。

  1. 在培训期间, 培训进度选项卡会显示当前培训进度:排队中、进行中或已完成。
  2. 训练运行完成后,点击训练运行名称查看:
    • “监控”选项卡用于查看培训进度
    • “概览”选项卡用于查看实验配置
    • “日志”选项卡可查看培训结果的详细信息,包括日志和其他输出。

任务4:部署经过训练的模型

只有在模型部署完成后,您才能使用该训练好的模型对新图像进行分类。 请按照以下步骤将模型推广到部署空间,然后部署模型:

  1. 在深度学习实验列表中,单击您的训练运行。
  2. 等待训练运行完成,然后将模型保存在 “已完成”部分
    1. 点击车型行末尾的 “操作”菜单 “操作”菜单 ,选择 “保存车型 ”。
    2. 为车型命名,然后点击保存。 这会将模型存储在 Watson Machine Learning 仓库中,并将其保存到项目中。
  3. “资产”选项卡中 ,您可以看到已保存的模型。
  4. 要部署该模型,您必须先将其提升到部署空间。
    1. 点击车型行末尾的 “溢出”菜单 溢出菜单 ,选择 “推广到空间 ”。
    2. 为目标空间选择一个现有的部署空间,或创建一个新的部署空间。
    3. 选择选项, 在提升车型后前往该空间中的车型
    4. 点击 “推广”
  5. 在部署空间中,点击 “新建部署 ”。
    1. 选择在线
    2. 请输入部署的名称。
    3. 单击创建
    4. 监视模型部署的状态。

任务5:测试部署后的模型

请按照以下步骤从部署详情页面测试已部署的模型:

  1. 请在您的本地计算机上下载此示例有效载荷 JSON 文件,其中包含对应手写数字“5”和“4”的输入数据: MNIST_sample_payload_V4.json 外部链接
  2. 点击部署名称查看部署。
  3. 点击 “测试 ”选项卡。
  4. 点击 “浏览本地文件 ”,选择下载的有效载荷文件 tf-mnist-test-payload.json
  5. 点击“预测 ”。

示例输出:

{
    "values": [
    5,
    4
    ]
}

该输出显示:第一个输入数据被正确分类为属于“5”类,第二个输入数据被正确分类为属于“4”类。