ディープラーニング実験チュートリアル:MNISTデータセット( Watson Machine Learning )を使用して、手書き数字を認識する TensorFlow モデルを構築する
このチュートリアルでは、MNISTコンピュータビジョンデータセットを使用して、手書きの数字を認識するディープラーニングの TensorFlow モデルを学習させる手順を解説します。 このチュートリアルでは、Experiment Builder を使用してモデルのトレーニング、デプロイ、およびテストを行います。
前提条件
IBM Software Hub スケジューリングサービスは、実験を実行するために必要なコンポーネントです。
手順の概要
このチュートリアルでは、 Watson Studio の Experiment Builder を使用してディープラーニングモデルを学習させる基本的な手順を紹介します:
- タスク1:サンプルコードをダウンロードする
- タスク2:モデルを訓練する
- タスク3:トレーニングの進捗と結果をモニタリングする
- タスク4:学習済みモデルのデプロイ
- タスク 5: デプロイされたモデルのテスト
このチュートリアルでは、分散型ディープラーニングや、 Watson Machine Learning のハイパーパラメータ最適化機能の使用方法については説明していません。
チュートリアルのプレビュー
このビデオでは、TensorFlow モデルで手書きの数字を認識する方法を紹介します。
このビデオは、このドキュメントのコンセプトとタスクを学ぶための視覚的な方法を提供します。
タスク1:サンプルコードをダウンロードする
TensorFlowモデルを構築するPythonコードのサンプルはこちらからダウンロードできます:tf_model_with_metrics_2_1.zip.
tf_model_with_metrics_2_1.zip のzipファイルには、3つのファイルが含まれています
- 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:モデルを訓練する
モデルを訓練するプロジェクトでディープラーニングの実験を作成するには、以下の手順に従います
- プロジェクトを開きます。
- 資産 > ディープラーニングの実験を構築する をクリックしてください。
- 実験の名前と、必要に応じて説明を入力してください。
- モデル定義を追加します。
名前と説明を指定します。
参照をクリックしてサンプルコード
tf_model_with_metrics_2_1.zipをアップロードします。モデル構築コードで使用されるフレームワークを指定します。 tensorflow_rt24.1-py3.11。
リソースの種類として、CPU または GPU のどちらかを指定します。
ハードウェア仕様を設定します。例えば、 GPU 1基、汎用、CPU 1基、 4GB RAM。
トレーニングの種類を 「シングルノード」 に設定します。
実行コマンドを設定します。モデル作成コードを実行するには、以下のコマンドを指定します。
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.
- 「作成して実行」 をクリックします。
タスク3:トレーニングの進捗と結果をモニタリングする
以下の手順に従って、実験ビルダーの 「トレーニング実行」タブでトレーニング実行の進捗状況を確認してください。
- トレーニング中は、 トレーニング実行状況タブに、トレーニングの現在の進捗状況(キュー待ち、実行中、完了)が表示されます。
- トレーニングランが完了したら、トレーニングラン名をクリックして表示します
- トレーニングの進捗状況を確認するには、[モニター] タブをクリックします
- [概要] タブで実験構成を表示する
- ログタブでは、ログやその他の出力を含むトレーニング結果の詳細を確認できます。
タスク4:学習済みモデルのデプロイ
学習済みのモデルを使用して新しい画像を分類できるのは、モデルがデプロイされた後だけです。 以下の手順に従ってモデルデプロイメントスペースプロモートし、その後モデルをデプロイします
- ディープ・ラーニング・エクスペリメント・リストで、トレーニング実行をクリックします。
- トレーニング実行が完了するまで待ち、 完了したセクションでモデルを保存します
- モデルの行の最後に表示されているアクションメニュー
をクリックし、 モデルを保存を選択します。
- モデルに名前を付け、「保存」 をクリックします。 これにより、モデルが Watson Machine Learning リポジトリに保存され、プロジェクトに保存されます。
- モデルの行の最後に表示されているアクションメニュー
- 資産 タブでは、保存したモデルを確認できます。
- モデルをデプロイするには、まずデプロイメントスペースにプロモートする必要があります。
- モデルの行の最後に表示されている 溢れる メニュー
をクリックし、 スペースへのプロモート を選択します。
- Select an existing deployment space for the ターゲット空間 or create a new deployment space.
- プロモーションした後のスペースにモデルを表示するオプションを選択します。
- 「プロモート」 をクリックします。
- モデルの行の最後に表示されている 溢れる メニュー
- In the deployment space, click デプロイメント.
- オンラインを選択します。
- デプロイメントの名前を入力します。
- 「Create」をクリックします。
- モデル・デプロイメントの状況をモニターします。
タスク 5: デプロイされたモデルのテスト
デプロイメントからデプロイしたモデルをテストするには、以下の手順に従います
- お使いのローカルコンピュータに、手書きの数字「5」と「4」に対応する入力データを含む、このサンプルペイロードJSONファイルをダウンロードしてください: MNIST_sample_payload_V4.json

- デプロイメントをクリックするとデプロイメントを表示できます。
- [テスト] タブをクリックします。
- 「ローカルファイルを参照」をクリックし、ダウンロードしたペイロードファイル
tf-mnist-test-payload.jsonを選択します。 - 「予測」 をクリックします。
サンプル出力:
{
"values": [
5,
4
]
}
この出力は、最初の入力データがクラス「5」に正しく分類され、2番目の入力データがクラス「4」に正しく分類されたことを示しています。