

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 画像分類 - MXNet
<a name="image-classification"></a>

Amazon SageMaker の画像分類アルゴリズムは、マルチラベル分類をサポートする教師あり学習アルゴリズムです。入力として画像を取得し、その画像に割り当てられた 1 つ以上のラベルを出力します。畳み込みニューラルネットワークを使用します。これは、ゼロからトレーニングすることも、大量のトレーニングイメージが使用可能でない場合に転移学習を使用してトレーニングすることもできます。

Amazon SageMaker AI イメージ分類アルゴリズムに推奨される入力形式は、Apache MXNet [RecordIO](https://mxnet.apache.org/api/faq/recordio) です。ただし、.jpg または .png の形式で RAW イメージを使用することもできます。機械学習システムの効率的なデータ準備と読み込みの概要については、[こちらの説明](https://mxnet.apache.org/api/architecture/note_data_loading)を参照してください。

**注記**  
既存の深層学習フレームワークとの高い相互運用性を維持するために、これは他の Amazon SageMaker AI アルゴリズムによって一般に使用される protobuf データ形式とは異なります。

畳み込みネットワークの詳細については、以下を参照してください。
+ [Deep residual learning for image recognition (イメージ認識のための深層残差学習)](https://arxiv.org/abs/1512.03385) Kaiming He 他、2016 IEEE Conference on Computer Vision and Pattern Recognition (2016 年コンピュータビジョンとパターン認識に関する IEEE 会議)
+ [ImageNet イメージデータベース](http://www.image-net.org/)
+ [Gluon-CV と MXNet によるイメージ分類](https://gluon-cv.mxnet.io/build/examples_classification/index.html)

**Topics**
+ [イメージ分類アルゴリズムの入出力インターフェイス](#IC-inputoutput)
+ [イメージ分類アルゴリズムの EC2 インスタンスの推奨事項](#IC-instances)
+ [イメージ分類サンプルノートブック](#IC-sample-notebooks)
+ [イメージ分類の仕組み](IC-HowItWorks.md)
+ [イメージ分類ハイパーパラメータ](IC-Hyperparameter.md)
+ [イメージ分類モデルを調整する](IC-tuning.md)

## イメージ分類アルゴリズムの入出力インターフェイス
<a name="IC-inputoutput"></a>

SageMaker AI イメージ分類アルゴリズムは、ファイルモードでのトレーニング用に RecordIO (`application/x-recordio`) とイメージ (`image/png`、`image/jpeg`、`application/x-image`) コンテンツタイプの両方をサポートし、パイプモードでのトレーニング用に RecordIO (`application/x-recordio`) コンテンツタイプをサポートします。ただし、RecordIO ファイルを作成せずに、拡張マニフェスト形式を使用して、イメージファイル (`image/png`、`image/jpeg`、`application/x-image`) を使用してパイプモードでトレーニングすることもできます。

分散トレーニングは、ファイルモードとパイプモードでサポートされています。パイプモードで RecordIO コンテンツタイプを使用する場合は、`S3DataSource` の `S3DataDistributionType` を `FullyReplicated` に設定する必要があります。このアルゴリズムは、データが各マシンにコピーされる完全にレプリケートされるモデルをサポートします。

このアルゴリズムでは、推論に `image/png`、`image/jpeg`、および `application/x-image` のみをサポートします。

### RecordIO 形式でトレーニングする
<a name="IC-recordio-training"></a>

トレーニングに RecordIO フォーマットを使用する場合は、`train` チャネルと `validation` チャネルの両方を `InputDataConfig` リクエストの [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) パラメータの値として指定します。1 つの RecordIO (`.rec`) ファイルを `train` チャネルで指定し、もう 1 つの RecordIO ファイルを `validation` チャネルで指定します。両方のチャネルのコンテンツタイプを `application/x-recordio` に設定します。

### イメージ形式でトレーニングする
<a name="IC-image-training"></a>

トレーニングにイメージフォーマットを使用する場合は、`train`、`validation`、`train_lst`、`validation_lst` チャネルを `InputDataConfig` リクエストの [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) パラメータの値として指定します。`.jpg` および `.png` チャネルの個々のイメージデータ (`train` または `validation` ファイル) を指定します。`.lst` チャネルと `train_lst` チャネルそれぞれに 1 つの `validation_lst` ファイルを指定します。4 つのチャネルすべてのコンテンツタイプを `application/x-image` に設定します。

**注記**  
SageMaker AI は、トレーニングデータと検証データを異なるチャネルから別々に読み取るため、それぞれのデータは異なるフォルダに保存する必要があります。

`.lst` ファイルはタブ区切りファイルで、イメージファイルのリストを含む 3 つの列があります。最初の列はイメージのインデックスを指定し、2 番目の列はイメージのクラスラベルインデックスを指定します。3 番目の列はイメージファイルの相対パスを指定します。最初の列のイメージインデックスはすべてのイメージにわたって一意である必要があります。一連のクラスラベルインデックスには連番が付けられ、番号は 0 から開始する必要があります。たとえば、0 は cat クラス、1 は dog クラスなどです。

 次は、`.lst` ファイルの例です。

```
5      1   your_image_directory/train_img_dog1.jpg
1000   0   your_image_directory/train_img_cat1.jpg
22     1   your_image_directory/train_img_dog2.jpg
```

たとえば、トレーニングイメージが `s3://<your_bucket>/train/class_dog`、`s3://<your_bucket>/train/class_cat` などに保存されている場合は、`train` チャネルのパスをデータの最上位ディレクトリである `s3://<your_bucket>/train` として指定します。`.lst` ファイルで、`train_image_dog1.jpg` という名前の個々のファイルの相対パスを `class_dog` クラスディレクトリに `class_dog/train_image_dog1.jpg` として指定します。すべてのイメージファイルを `train` ディレクトリ内にある 1 つのサブディレクトリに保存することもできます。その場合は、そのサブディレクトリの相対パスを使用します。例えば、`s3://<your_bucket>/train/your_image_directory`。

### 拡張マニフェストイメージ形式でトレーニングする
<a name="IC-augmented-manifest-training"></a>

拡張マニフェスト形式を使用すると、RecordIO ファイルを作成しなくても、イメージファイルを使用してパイプモードでトレーニングを行うことができます。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストの `InputDataConfig` パラメータの値として、トレーニングチャネルと検証チャネルの両方を指定する必要があります。形式を使用している間、イメージとそれに対応する注釈のリストを含む S3 マニフェストファイルを生成する必要があります。マニフェストファイル形式は、各行が 1 つのサンプルを表す [JSON Lines](http://jsonlines.org/) 形式になっている必要があります。イメージは、その S3 の場所を指す `'source-ref'` タグを使用して指定します。注釈は、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストで指定されている `"AttributeNames"` パラメータ値の下に入力します。`metadata` タグの下に追加のメタデータを含めることもできますが、これらはアルゴリズムによって無視されます。次の例では、`"AttributeNames"` は画像および注釈参照 `["source-ref", "class"]` のリストに含まれます。対応するラベル値は最初のイメージの場合は `"0"`、2 番目のイメージの場合は `“1”` です。

```
{"source-ref":"s3://image/filename1.jpg", "class":"0"}
{"source-ref":"s3://image/filename2.jpg", "class":"1", "class-metadata": {"class-name": "cat", "type" : "groundtruth/image-classification"}}
```

ImageClassification アルゴリズムをトレーニングする場合、入力ファイルの `"AttributeNames"` の順番が重要になります。パイプ指定されたデータは特定の順で受け入れられます。`image` が最初になり、その後に `label` が続きます。したがって、この例の「AttributeNames」では、`"source-ref"` が最初になり、その後に `"class"` が続きます。拡張マニフェストで ImageClassification アルゴリズムを使用する場合、`RecordWrapperType` パラメータの値は `"RecordIO"` である必要があります。

値の JSON 配列を指定することで、マルチラベルのトレーニングもサポートされます。`num_classes` ハイパーパラメータは、クラスの合計数と一致するように設定する必要があります。有効なラベル形式には、multi-hot と class-id の 2 つがあります。

multi-hot 形式では、各ラベルはすべてのクラスの multi-hot エンコードされたベクトルであり、各クラスは 0 または 1 の値をとります。次の例では 3 つのクラスがあります。最初のイメージはクラス 0 と 2 でラベル付けされ、2 番目のイメージはクラス 2 のみでラベル付けされます。

```
{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[1, 0, 1]"}
{"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[0, 0, 1]"}
```

class-id 形式では、各ラベルはデータポイントに適用される [0, `num_classes`) からのクラス ID のリストです。代わりに、前の例は次のようになります。

```
{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[0, 2]"}
{"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[2]"}
```

multi-hot 形式はデフォルトですが、 `label-format` パラメータを使用してコンテンツタイプに明示的に設定できます (`"application/x-recordio; label-format=multi-hot".`)。 GroundTruth によって出力される形式である class-id 形式は、明示的に設定する必要があります (`"application/x-recordio; label-format=class-id".`)。

拡張マニフェストファイルの詳細については、[トレーニングジョブの拡張マニフェストファイル](augmented-manifest.md)を参照してください。

### 段階的トレーニング
<a name="IC-incremental-training"></a>

SageMaker AI で以前にトレーニングしたモデルのアーティファクトを使用して、新しいモデルのトレーニングをシードすることもできます。段階的トレーニングでは、同じモデルまたは類似のデータを使用して新しいモデルをトレーニングする際のトレーニング時間が短縮されます。SageMaker AI イメージ分類モデルは、SageMaker AI でトレーニングされた別の組み込みイメージ分類モデルでのみシードできます。

事前トレーニング済みモデルを使用するには、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストで、`InputDataConfig` パラメータに `ChannelName` を "model" と指定します。モデルチャネルの `ContentType` を `application/x-sagemaker-model` に設定します。モデルチャネルにアップロードする新しいモデルと事前トレーニング済みモデルの両方の入力ハイパーパラメータの設定は、`num_layers`、`image_shape`、および `num_classes` 入力パラメータの設定と同じである必要があります。これらのパラメータはネットワークアーキテクチャーを定義します。事前トレーニング済みモデルファイルには、SageMaker AI によって出力された圧縮モデルアーティファクト (.tar.gz 形式) を使用します。入力データには、RecordIO 形式またはイメージ形式を使用できます。

### イメージ分類アルゴリズムによる推論
<a name="IC-inference"></a>

生成されたモデルは推論のためにホストでき、エンコードされた `.jpg` および `.png` イメージ形式を `image/png, image/jpeg`、および `application/x-image` コンテンツタイプとしてサポートします。入力イメージのサイズは自動的に変更されます。出力は、JSON 形式、またはバッチ変換用の [JSON Lines テキスト形式](http://jsonlines.org/)でエンコードされたすべてのクラスの確率値です。イメージ分類モデルはリクエストごとに 1 つのイメージを処理するため、JSON または JSON Lines 形式で 1 行のみを出力します。以下は、JSON Lines 形式のレスポンスの例です。

```
accept: application/jsonlines

 {"prediction": [prob_0, prob_1, prob_2, prob_3, ...]}
```

トレーニングと推論の詳細については、概要説明で言及しているイメージ分類サンプルノートブックのインスタンスを参照してください。

## イメージ分類アルゴリズムの EC2 インスタンスの推奨事項
<a name="IC-instances"></a>

イメージ分類では、P2、P3、G4dn、G5 インスタンスをサポートしています。大きなバッチサイズのトレーニングにはメモリが多い GPU インスタンスを使用することをお勧めします。分散型トレーニングでは複数 GPU および複数マシン設定でアルゴリズムを実行することもできます。CPU (C4 など) インスタンスと GPU (P2、P3、G4dn、または G5) インスタンスの両方を推論に使用できます。

## イメージ分類サンプルノートブック
<a name="IC-sample-notebooks"></a>

SageMaker AI 画像分類アルゴリズムを使用するサンプルノートブックについては、「[Build and Register an MXNet Image Classification Model via SageMaker Pipelines](https://github.com/aws-samples/amazon-sagemaker-pipelines-mxnet-image-classification/blob/main/image-classification-sagemaker-pipelines.ipynb)」を参照してください。SageMaker AI でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については、「[Amazon SageMaker ノートブックインスタンス](nbi.md)」を参照してください。ノートブックインスタンスを作成して開いたら、**[SageMaker AI サンプル]** タブを選択して、すべての SageMaker AI サンプルのリストを表示します。イメージ分類サンプルノートブックは、[**Introduction to Amazon algorithm (Amazon アルゴリズムの概要)**] セクションにあります。ノートブックを開くには、その [**Use (使用)**] タブをクリックして [**Create copy (コピーを作成)**] を選択します。

# イメージ分類の仕組み
<a name="IC-HowItWorks"></a>

イメージ分類アルゴリズムでは、イメージを入力として受け取り、それを出力カテゴリの 1 つに分類します。ディープラーニングはイメージ分類ドメインに革命をもたらし、優れたパフォーマンスを実現しました。イメージ分類の精度を高めるために、[ResNet](https://arxiv.org/abs/1512.03385)、[DenseNet](https://arxiv.org/abs/1608.06993)、[Inception](https://arxiv.org/pdf/1409.4842.pdf) などのさまざまなディープラーニングネットワークが開発されています。同時に、これらのネットワークのトレーニングに不可欠なラベル付きのイメージデータを収集する作業が行われてきました。[ImageNet](https://www.image-net.org/) はこのような大規模データセットの 1 つで、約 11,000 個のカテゴリを持つ 1,100 万を超えるイメージがあります。ネットワークが ImageNet データでトレーニングされたら、簡単な再調整や微調整を加えるだけで、そのネットワークを他のデータセットでも一般化できます。この転移学習アプローチでは、ネットワークは重み (この例では ImageNet でトレーニングされたもの) で初期化されます。これは後で別のデータセットのイメージ分類タスク用に微調整できます。

Amazon SageMaker AI のイメージ分類は、完全トレーニングと転移学習の 2 つのモードで実行できます。完全トレーニングモードでは、ネットワークはランダムな重みで初期化され、ユーザーデータでゼロからトレーニングされます。転送学習モードでは、ネットワークは事前にトレーニングされた重みで初期化され、最上位の完全に接続されたレイヤーだけがランダムな重みで初期化されます。次に、ネットワーク全体が新しいデータで微調整されます。このモードでは、小規模なデータセットでもトレーニングを実現できます。これは、ネットワークがすでにトレーニングされているため、十分なトレーニングデータがない場合でも使用できるからです。

# イメージ分類ハイパーパラメータ
<a name="IC-Hyperparameter"></a>

ハイパーパラメータは、機械学習モデルが学習を開始する前に設定されるパラメータです。Amazon SageMaker AI 組み込みのイメージ分類アルゴリズムでは、次のハイパーパラメータがサポートされています。イメージ分類ハイパーパラメータの調整については、「[イメージ分類モデルを調整する](IC-tuning.md)」を参照してください。


| Parameter Name | 説明 | 
| --- | --- | 
| num\$1classes | 出力クラスの数。このパラメータは、ネットワーク出力のディメンションを定義し、通常はデータセット内のクラス数に設定されます。 マルチクラス分類に加えて、マルチラベル分類もサポートされています。拡張マニフェストファイルを使用したマルチラベル分類の操作方法の詳細については、「[イメージ分類アルゴリズムの入出力インターフェイス](image-classification.md#IC-inputoutput)」を参照してください。 **必須** 有効な値: 正の整数  | 
| num\$1training\$1samples | 入力データセット内のトレーニング例の数。 この値とトレーニングセット内のサンプル数が一致しない場合、`lr_scheduler_step` パラメータの動作は未定義になり、分散型トレーニングの精度に影響することがあります。 **必須** 有効な値: 正の整数  | 
| augmentation\$1type |  データ補強タイプ。入力イメージは、次に示す複数の方法で補強できます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/IC-Hyperparameter.html) **オプション**  有効な値: `crop`、`crop_color`、または `crop_color_transform` デフォルト値: なし  | 
| beta\$11 | `adam` の beta1。つまり、最初のモーメントの見積もりの指数関数的減衰率です。 **オプション**  有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.9 | 
| beta\$12 | `adam` の beta2。つまり、2 番目のモーメントの見積もりの指数関数的減衰率です。 **オプション**  有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.999 | 
| checkpoint\$1frequency | モデルパラメータを保存する期間 (エポック数)。 すべてのチェックポイントファイルは、最終的なモデルファイル「model.tar.gz」の一部として保存され、指定されたモデルの場所に S3 にアップロードされることに注意してください。これにより、トレーニング中に保存されたチェックポイントの数に比例してモデルファイルのサイズが大きくなります。 **オプション** 有効な値: `epochs` 以下の正の整数。 デフォルト値: なし (検証精度が最も高いエポックにチェックポイントを保存します) | 
| early\$1stopping | トレーニング中に早期停止ロジックを使用する場合は `True`。使用しない場合は `False`。 **オプション** 有効な値: `True` または `False` デフォルト値: `False` | 
| early\$1stopping\$1min\$1epochs | 早期停止ロジックを呼び出す前に実行する必要があるエポックの最小数。`early_stopping` = `True` の場合にのみ使用されます。 **オプション** 有効な値: 正の整数 デフォルト値: 10 | 
| early\$1stopping\$1patience | 関連メトリクスで改善が見られなかった場合にトレーニングを終了する前に待機するエポックの数。`early_stopping` = `True` の場合にのみ使用されます。 **オプション** 有効な値: 正の整数 デフォルト値: 5 | 
| early\$1stopping\$1tolerance | 精度検証メトリクスの改善を測定する相対的な許容値。精度の改善を前回の最高精度で除算した比率が `early_stopping_tolerance` 値セットより小さい場合、早期停止は改善がないと見なします。`early_stopping` = `True` の場合にのみ使用されます。 **オプション** 有効な値: 0 ≤ 浮動小数点数 ≤ 1 デフォルト値: 0.0 | 
| epochs | トレーニングエポックの数。 **オプション** 有効な値: 正の整数 デフォルト値: 30 | 
| eps | `adam` と `rmsprop` のイプシロン。通常は、0 で除算されないように小さな値に設定されます。 **オプション** 有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 1e-8 | 
| gamma | `rmsprop` のガンマ、二乗勾配の移動平均の減衰係数。 **オプション** 有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.9 | 
| image\$1shape | 入力イメージのディメンション。これはネットワークの入力レイヤーと同じサイズになります。フォーマットは "`num_channels`, 高さ, 幅" として定義されます。ネットワークが入力の多様なディメンションを処理できるため、イメージディメンションは任意の値を受け取ることができます。ただし、大きなイメージディメンションが使用されている場合はメモリの制約がある可能性があります。事前にトレーニングされたモデルでは、224 x 224 に固定されたイメージサイズのみを使用できます。イメージ分類の一般的なイメージディメンションは '3,224,224' です。これは ImageNet データセットに似ています。 トレーニングの場合、任意の次元でいずれかの入力イメージがこのパラメータよりも小さいと、トレーニングは失敗します。イメージが大きい場合、このパラメータで指定されたクロップ領域を使用して、イメージの一部がクロップされます。ハイパーパラメータ `augmentation_type` が設定されている場合、ランダムクロップが行われ、それ以外の場合は、中央クロップが行われます。 推論時に、入力イメージのサイズはトレーニング中に使用された `image_shape` に変更されます。縦横比は保持されず、イメージはクロップされません。 **オプション** 有効な値: 文字列 デフォルト値: '3,224,224' | 
| kv\$1store |  分散型トレーニング中の重み更新同期モード。重み更新は、複数マシン間で同期的または非同期的に更新できます。同期更新は、一般には非同期更新よりも精度が高くなりますが、低速な可能性があります。詳細については、MXNet の分散型トレーニングを参照してください。 このパラメータは、単一のマシントレーニングには適用されません。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/IC-Hyperparameter.html) **オプション** 有効な値: `dist_sync` または `dist_async` デフォルト値: なし  | 
| learning\$1rate | 初期学習レート。 **オプション** 有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.1 | 
| lr\$1scheduler\$1factor | `lr_scheduler_step` = `lr_new` \$1 `lr_old` として定義される、`lr_scheduler_factor` パラメータと組み合わせて使用される学習レートを下げる率。 **オプション** 有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.1 | 
| lr\$1scheduler\$1step | 学習レートを下げるエポック。`lr_scheduler_factor` パラメータで説明しているように、学習レートはこれらのエポックで `lr_scheduler_factor` だけ下げられます。たとえば、値が "10, 20" に設定されている場合、学習レートは 10 番目のエポックの後に `lr_scheduler_factor` だけ下げられ、20 番目のエポックの後に再び `lr_scheduler_factor` だけ下げられます。エポックは "," で区切られます。 **オプション** 有効な値: 文字列 デフォルト値: なし | 
| mini\$1batch\$1size | トレーニングのバッチサイズ。単一マシンのマルチ GPU の設定では、各 GPU は `mini_batch_size`/num\$1gpu トレーニングサンプルを処理します。dist\$1sync モードの複数マシントレーニングでは、実際のバッチサイズは `mini_batch_size` \$1 マシン数です。詳細については、MXNet のドキュメントを参照してください。 **オプション** 有効な値: 正の整数 デフォルト値: 32 | 
| momentum | `sgd` と `nag` のモーメンタムであり、他のオプティマイザでは無視されます。 **オプション** 有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.9 | 
| multi\$1label |  各サンプルに複数のラベルを割り当てることができる複数ラベル分類に使用するフラグ。全クラスの平均精度が記録されます。 **オプション** 有効な値: 0 または 1 デフォルト値: 0  | 
| num\$1layers | ネットワークのレイヤー数。大きなイメージサイズ (たとえば、224x224 - ImageNet など) のデータでは、レイヤー数をセット [18、34、50、101、152、200] から選択することをお勧めします。小さなイメージサイズ (たとえば、28x28 - CIFAR など) のデータでは、レイヤー数をセット [20、32、44、56、110] から選択することをお勧めします。各セット内のレイヤー数は ResNet の論文に基づきます。転移学習では、レイヤー数は基本ネットワークのアーキテクチャを定義するため、セット [18、34、50、101、152、200] からのみ選択できます。 **オプション** 有効な値: [18, 34, 50, 101, 152, 200] または [20, 32, 44, 56, 110] 内の正の整数。 デフォルト値: 152 | 
| optimizer | オプティマイザのタイプ。オプティマイザのパラメータの詳細については、MXNet の API を参照してください。 **オプション** 有効な値: `sgd`、`adam`、`rmsprop`、`nag` のいずれか。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/IC-Hyperparameter.html) デフォルト値: `sgd` | 
| precision\$1dtype | トレーニングに使用される重みの精度。アルゴリズムは、重みに単精度 (`float32`) または半精度 (`float16`) を使用できます。重みに半精度を使用すると、メモリ消費量が減少します。 **オプション** 有効な値: `float32` または `float16` デフォルト値: `float32` | 
| resize | トレーニングのためにイメージのサイズを変更した後、イメージの最短辺にあるピクセル数です。パラメータが設定されていない場合、トレーニングデータはサイズ変更なしで使用されます。パラメータは、トレーニングの失敗を防ぐため、`image_shape` の幅と高さのコンポーネントよりも大きくする必要があります。 イメージコンテンツタイプを使用する場合は**必須** RecordIO コンテンツタイプを使用する場合は**オプション** 有効な値: 正の整数 デフォルト値: なし  | 
| top\$1k | トレーニング中に top-k 精度を報告します。top-1 トレーニング精度はすでに報告されている通常のトレーニング精度と同じであるため、このパラメータは 1 より大きい必要があります。 **オプション** 有効な値: 1 より大きい正の整数。 デフォルト値: なし | 
| use\$1pretrained\$1model | トレーニングに事前トレーニング済みモデルを使用するためのフラグ。1 に設定すると、対応するレイヤー数の事前トレーニング済みモデルがロードされ、トレーニングに使用されます。最上位 FC レイヤーのみがランダムな重みで再初期化されます。それ以外の場合、ネットワークはゼロからトレーニングされます。 **オプション** 有効な値: 0 または 1 デフォルト値: 0 | 
| use\$1weighted\$1loss |  重みがクラスの分布に基づいて計算される、複数ラベル分類に重み付き交差エントロピー損失を使用するためのフラグ (`multi_label` = 1 の場合にのみ使用)。 **オプション** 有効な値: 0 または 1 デフォルト値: 0  | 
| weight\$1decay | `sgd` と `nag` の係数重み減衰であり、他のオプティマイザでは無視されます。 **オプション** 有効な値: 浮動小数点数。[0, 1] の範囲です。 デフォルト値: 0.0001 | 

# イメージ分類モデルを調整する
<a name="IC-tuning"></a>

*自動モデル調整*は、ハイパーパラメータ調整とも呼ばれ、データセットのさまざまなハイパーパラメータをテストする多数のジョブを実行して、モデルの最適なバージョンを見つけます。調整可能なハイパーパラメータ、それぞれの値の範囲、および目標メトリクスを選択します。アルゴリズムが計算するメトリクスから目標メトリクスを選択します。自動モデル調整は、選択されたハイパーパラメータを検索して、目標メトリクスを最適化するモデルになる値の組み合わせを見つけます。

モデル調整の詳細については、「[SageMaker AI の自動モデルチューニング](automatic-model-tuning.md)」を参照してください。

## イメージ分類アルゴリズムによって計算されたメトリクス
<a name="IC-metrics"></a>

イメージ分類アルゴリズムは教師ありアルゴリズムです。このアルゴリズムは、トレーニング中に計算された精度メトリクスを報告します。モデルを調整するときには、このメトリクスを目標メトリクスとして選択してください。


| メトリクス名 | 説明 | 最適化の方向 | 
| --- | --- | --- | 
| validation:accuracy | 実行された予測の総数に対する正しい予測の数の比率。 | 最大化 | 

## 調整可能なイメージ分類ハイパーパラメータ
<a name="IC-tunable-hyperparameters"></a>

以下のハイパーパラメータを使用してイメージ分類モデルを調整します。イメージ分類の目標メトリクスに最も大きな影響を与えるハイパーパラメータは、`mini_batch_size`、`learning_rate`、および `optimizer` です。選択した `optimizer` に基づいて、`momentum`、`weight_decay`、`beta_1`、`beta_2`、`eps`、`gamma` などのオプティマイザ関連のハイパーパラメータを調整します。たとえば、`adam` が `optimizer` である場合にのみ `beta_1` と `beta_2` を使用します。

各オプティマイザで使用されるハイパーパラメータの詳細については、[イメージ分類ハイパーパラメータ](IC-Hyperparameter.md)を参照してください。


| パラメータ名 | パラメータタイプ | 推奨範囲 | 
| --- | --- | --- | 
| beta\$11 | ContinuousParameterRanges | MinValue: 1e-6、MaxValue: 0.999 | 
| beta\$12 | ContinuousParameterRanges | MinValue: 1e-6、MaxValue: 0.999 | 
| eps | ContinuousParameterRanges | MinValue: 1e-8、MaxValue: 1.0 | 
| gamma | ContinuousParameterRanges | MinValue: 1e-8、MaxValue: 0.999 | 
| learning\$1rate | ContinuousParameterRanges | MinValue: 1e-6、MaxValue: 0.5 | 
| mini\$1batch\$1size | IntegerParameterRanges | MinValue: 8、MaxValue: 512 | 
| momentum | ContinuousParameterRanges | MinValue: 0.0、MaxValue: 0.999 | 
| optimizer | CategoricalParameterRanges | ['sgd', ‘adam’, ‘rmsprop’, 'nag'] | 
| weight\$1decay | ContinuousParameterRanges | MinValue: 0.0、MaxValue: 0.999 | 