

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Classification des images - TensorFlow
<a name="image-classification-tensorflow"></a>

L'algorithme Amazon SageMaker Image Classification est un TensorFlow algorithme d'apprentissage supervisé qui prend en charge l'apprentissage par transfert avec de nombreux modèles préentraînés issus du [TensorFlow Hub](https://tfhub.dev/s?fine-tunable=yes&module-type=image-classification&subtype=module,placeholder&tf-version=tf2). Utilisez l'apprentissage par transfert pour affiner l'un des modèles pré-entraînés disponibles sur votre propre jeu de données, même si une grande quantité de données d'image n'est pas disponible. L'algorithme de classification des images prend une image en entrée et génère en sortie une probabilité pour chaque étiquette de classe fournie. Les jeux de données d'entraînement doivent être composés d'images au format .jpg, .jpeg ou .png. Cette page contient des informations sur les recommandations relatives aux instances Amazon EC2 et des exemples de blocs-notes pour la classification des images -. TensorFlow

**Topics**
+ [Comment utiliser l' TensorFlow algorithme de classification des SageMaker images](IC-TF-how-to-use.md)
+ [Interface d'entrée et de sortie pour l' TensorFlow algorithme de classification des images](IC-TF-inputoutput.md)
+ [Recommandation d'instance Amazon EC2 pour l'algorithme de classification des images TensorFlow](#IC-TF-instances)
+ [Classification des images - TensorFlow exemples de carnets](#IC-TF-sample-notebooks)
+ [Comment TensorFlow fonctionne la classification des images](IC-TF-HowItWorks.md)
+ [TensorFlow Modèles de hub](IC-TF-Models.md)
+ [Classification des images - TensorFlow Hyperparamètres](IC-TF-Hyperparameter.md)
+ [Régler une classification d'images - TensorFlow modèle](IC-TF-tuning.md)

# Comment utiliser l' TensorFlow algorithme de classification des SageMaker images
<a name="IC-TF-how-to-use"></a>

Vous pouvez utiliser la classification des images TensorFlow en tant qu'algorithme intégré d'Amazon SageMaker AI. La section suivante décrit comment utiliser la classification des images TensorFlow avec le SDK SageMaker AI Python. Pour plus d'informations sur l'utilisation de la classification des images, TensorFlow depuis l'interface utilisateur Amazon SageMaker Studio Classic, consultez[SageMaker JumpStart modèles préentraînés](studio-jumpstart.md).

L' TensorFlow algorithme de classification des images prend en charge l'apprentissage par transfert à l'aide de l'un des modèles TensorFlow Hub préentraînés compatibles. Pour obtenir la liste de tous les modèles pré-entraînés disponibles, consultez [TensorFlow Modèles de hub](IC-TF-Models.md). Chaque modèle pré-entraîné possède un `model_id` unique. L'exemple suivant utilise la MobileNet version V2 1.00 224 (`model_id`:`tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4`) pour affiner un ensemble de données personnalisé. Les modèles préentraînés sont tous prétéléchargés depuis le TensorFlow Hub et stockés dans des compartiments Amazon S3 afin que les tâches de formation puissent être exécutées de manière isolée sur le réseau. Utilisez ces artefacts d'entraînement de modèles prégénérés pour créer un estimateur d' SageMaker IA.

Tout d'abord, récupérez l'URI de l'image Docker, l'URI du script d'entraînement et l'URI du modèle pré-entraîné. Ensuite, modifiez les hyperparamètres comme bon vous semble. Vous pouvez consulter un dictionnaire Python de tous les hyperparamètres disponibles et de leurs valeurs par défaut avec `hyperparameters.retrieve_default`. Pour de plus amples informations, veuillez consulter [Classification des images - TensorFlow Hyperparamètres](IC-TF-Hyperparameter.md). Utilisez ces valeurs pour créer un estimateur SageMaker AI.

**Note**  
Les valeurs par défaut des hyperparamètres sont différentes selon les modèles. Pour les modèles plus grands, la taille de lot par défaut est plus petite et l'hyperparamètre `train_only_top_layer` a pour valeur `"True"`.

Cet exemple utilise le jeu de données [https://www.tensorflow.org/datasets/catalog/tf_flowers](https://www.tensorflow.org/datasets/catalog/tf_flowers), qui contient cinq classes d'images de fleurs. Nous avons prétéléchargé le jeu de données TensorFlow sous licence Apache 2.0 et l'avons rendu disponible avec Amazon S3. Pour affiner votre modèle, appelez `.fit` à l'aide de l'emplacement Amazon S3 de votre jeu de données d'entraînement.

```
from sagemaker import image_uris, model_uris, script_uris, hyperparameters
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the Docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pretrained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

# The sample training data is available in the following S3 bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

# Create SageMaker Estimator instance
tf_ic_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
)

# Use S3 path of the training data to launch SageMaker TrainingJob
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)
```

# Interface d'entrée et de sortie pour l' TensorFlow algorithme de classification des images
<a name="IC-TF-inputoutput"></a>

Chacun des modèles préentraînés répertoriés dans TensorFlow Hub Models peut être affiné pour n'importe quel ensemble de données contenant un certain nombre de classes d'images. Sachez comment formater vos données d'entraînement pour les saisir dans le TensorFlow modèle de classification des images.
+ **Format d'entrée des données d'entraînement :** vos données d'entraînement doivent être un répertoire contenant autant de sous-répertoires que le nombre de classes. Chaque sous-répertoire doit contenir des images appartenant à cette classe au format .jpg, .jpeg ou .png.

Voici un exemple de structure du répertoire d'entrée. Cet exemple de jeu de données comporte deux classes : `roses` et `dandelion`. Les fichiers image de chaque dossier de classe peuvent porter n'importe quel nom. Le répertoire d'entrée doit être hébergé dans un compartiment Amazon S3 avec un chemin similaire au suivant : `s3://bucket_name/input_directory/`. Notez que le `/` de fin est obligatoire.

```
input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg
```

Les modèles entraînés génèrent en sortie des fichiers de mappage d'étiquettes qui associent les noms de dossiers de classes aux indices de la liste des probabilités des classes de sortie. Ce mappage suit l'ordre alphabétique. Par exemple, dans l'exemple ci-dessus, la classe pissenlits est l'indice 0 et la classe roses est l'indice 1. 

Après entraînement, vous disposez d'un modèle affiné que vous pouvez continuer à entraîner à l'aide d'un entraînement incrémentiel ou déployer pour l'inférence. L' TensorFlow algorithme de classification des images ajoute automatiquement une signature de prétraitement et de post-traitement au modèle affiné afin qu'il puisse prendre des images en tant que probabilités de classe d'entrée et de retour. Le fichier qui mappe les indices de classe aux étiquettes de classe est enregistré avec les modèles. 

## Entraînement incrémentiel
<a name="IC-TF-incremental-training"></a>

Vous pouvez amorcer l'entraînement d'un nouveau modèle à l'aide d'artefacts provenant d'un modèle que vous avez déjà entraîné avec l' SageMaker IA. L'entraînement incrémentiel permet de gagner du temps lorsque vous souhaitez entraîner un nouveau modèle avec des données identiques ou similaires.

**Note**  
Vous ne pouvez amorcer qu'un modèle de classification d' SageMaker images ( TensorFlow modèle avec un autre TensorFlow modèle de classification d'images) entraîné par l' SageMaker IA. 

Vous pouvez utiliser n'importe quel jeu de données pour l'entraînement incrémentiel, à condition que l'ensemble de classes reste le même. L'étape d'entraînement incrémentiel est similaire à l'étape d'affinage, mais au lieu de commencer par un modèle pré-entraîné, vous commencez par un modèle affiné existant. Pour un exemple d'entraînement progressif avec l' TensorFlow algorithme de classification d'images SageMaker AI, consultez le carnet d'exemples [Introduction to SageMaker TensorFlow - Classification d'images](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

## Inférence avec l'algorithme de classification des images TensorFlow
<a name="IC-TF-inference"></a>

Vous pouvez héberger le modèle affiné issu de votre formation en classification d' TensorFlow images à des fins d'inférence. Toute image d'entrée pour l'inférence doit être au format `.jpg`, .`jpeg` ou `.png` et présenter un type de contenu `application/x-image`. L' TensorFlowalgorithme de classification des images redimensionne automatiquement les images d'entrée. 

L'exécution de l'inférence permet d'obtenir des valeurs de probabilité, des étiquettes de classe pour toutes les classes et l'étiquette prédite correspondant à l'indice de classe présentant la probabilité la plus élevée, codé au format JSON. Le TensorFlow modèle de classification des images traite une seule image par demande et ne produit qu'une seule ligne. Voici un exemple de réponse au format JSON :

```
accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}
```

Si `accept` a pour valeur `application/json`, le modèle génère en sortie uniquement des probabilités. Pour plus d'informations sur l'entraînement et l'inférence avec l' TensorFlow algorithme de classification d'images, consultez le bloc-notes d'exemple [Introduction à SageMaker TensorFlow la classification d'images](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

## Recommandation d'instance Amazon EC2 pour l'algorithme de classification des images TensorFlow
<a name="IC-TF-instances"></a>

L' TensorFlow algorithme de classification des images prend en charge toutes les instances de CPU et de GPU pour l'entraînement, notamment :
+ `ml.p2.xlarge`
+ `ml.p2.16xlarge`
+ `ml.p3.2xlarge`
+ `ml.p3.16xlarge`
+ `ml.g4dn.xlarge`
+ `ml.g4dn.16.xlarge`
+ `ml.g5.xlarge`
+ `ml.g5.48xlarge`

Nous recommandons d'utiliser les instances de GPU avec davantage de mémoire pour l'entraînement avec de grandes tailles de lot. Les instances de CPU (telles que M5) et de GPU (P2, P3, G4dn ou G5) peuvent être utilisées pour l'inférence.

## Classification des images - TensorFlow exemples de carnets
<a name="IC-TF-sample-notebooks"></a>

Pour plus d'informations sur l'utilisation de l' TensorFlow algorithme de classification SageMaker d'images pour l'apprentissage par transfert sur un ensemble de données personnalisé, consultez le bloc-notes [Introduction to SageMaker TensorFlow - Classification d'images](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

Pour savoir comment créer et accéder à des instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter l'exemple dans SageMaker AI, consultez. [Instances de SageMaker blocs-notes Amazon](nbi.md) Après avoir créé une instance de bloc-notes et l'avoir ouverte, sélectionnez l'onglet **Exemples d'SageMaker IA** pour voir la liste de tous les exemples d' SageMaker IA. Pour ouvrir un bloc-notes, choisissez son onglet **Use** (Utiliser), puis **Create copy** (Créer une copie).

# Comment TensorFlow fonctionne la classification des images
<a name="IC-TF-HowItWorks"></a>

L' TensorFlow algorithme Image Classification - prend une image en entrée et la classe dans l'une des étiquettes de classe de sortie. Divers réseaux d'apprentissage en profondeur tels que MobileNet, ResNet, Inception et EfficientNet sont très précis pour la classification des images. Il existe également des réseaux d'apprentissage profond formés sur de grands ensembles de données d'images ImageNet, tels que ceux qui contiennent plus de 11 millions d'images et près de 11 000 classes. Une fois qu'un réseau a été entraîné avec ImageNet des données, vous pouvez affiner le réseau sur un jeu de données en mettant un accent particulier sur l'exécution de tâches de classification plus spécifiques. L' TensorFlow algorithme Amazon SageMaker Image Classification prend en charge l'apprentissage par transfert sur de nombreux modèles préentraînés disponibles dans le TensorFlow Hub.

En fonction du nombre d'étiquettes de cours figurant dans vos données de formation, une couche de classification est attachée au modèle TensorFlow Hub préentraîné de votre choix. La couche de classification se compose d'une couche d'abandon, d'une couche dense et d'une couche entièrement connectée avec un régulariseur à 2 normes initialisé avec des pondérations aléatoires. Le modèle possède des hyperparamètres pour le taux d'abandon de la couche d'abandon et le facteur de régularisation L2 pour la couche dense. Vous pouvez ensuite affiner le réseau entier (y compris le modèle pré-entraîné) ou uniquement la couche de classification supérieure sur les nouvelles données d'entraînement. Avec cette méthode d'apprentissage par transfert, un entraînement avec des jeux de données plus petits est possible.

# TensorFlow Modèles de hub
<a name="IC-TF-Models"></a>

Les modèles préentraînés suivants peuvent être utilisés pour l'apprentissage par transfert avec l' TensorFlow algorithme de classification des images. 

Les modèles suivants varient de manière significative par leur taille, le nombre de paramètres de modèle, la durée d'entraînement et la latence d'inférence pour n'importe quel jeu de données. Le meilleur modèle pour votre cas d'utilisation dépend de la complexité de l'affinage du jeu de données et de toutes vos exigences en matière de durée d'entraînement, de latence d'inférence ou de précision du modèle.


| Nom du modèle | `model_id` | Source | 
| --- | --- | --- | 
| MobileNet V2 1,00 224 | `tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/classification/4) | 
| MobileNet V2 0,75 224 | `tensorflow-ic-imagenet-mobilenet-v2-075-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v2_075_224/classification/4) | 
| MobileNet V2 0,50 224 | `tensorflow-ic-imagenet-mobilenet-v2-050-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v2_050_224/classification/4) | 
| MobileNet V2 0,35 224 | `tensorflow-ic-imagenet-mobilenet-v2-035-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v2_035_224/classification/4) | 
| MobileNet V2 1,40 224 | `tensorflow-ic-imagenet-mobilenet-v2-140-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/classification/4) | 
| MobileNet V2 1,30 224 | `tensorflow-ic-imagenet-mobilenet-v2-130-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v2_130_224/classification/4) | 
| MobileNet V2 | `tensorflow-ic-tf2-preview-mobilenet-v2-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/tf2-preview/mobilenet_v2/classification/4) | 
| Inception V3 | `tensorflow-ic-imagenet-inception-v3-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/inception_v3/classification/4) | 
| Inception V2 | `tensorflow-ic-imagenet-inception-v2-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/inception_v2/classification/4) | 
| Inception V1 | `tensorflow-ic-imagenet-inception-v1-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/inception_v1/classification/4) | 
| Inception V3 Preview | `tensorflow-ic-tf2-preview-inception-v3-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/tf2-preview/inception_v3/classification/4) | 
| Inception ResNet V2 | `tensorflow-ic-imagenet-inception-resnet-v2-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/inception_resnet_v2/classification/4) | 
| ResNet V2 50 | `tensorflow-ic-imagenet-resnet-v2-50-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_v2_50/classification/4) | 
| ResNet V2 101 | `tensorflow-ic-imagenet-resnet-v2-101-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_v2_101/classification/4) | 
| ResNet V2 152 | `tensorflow-ic-imagenet-resnet-v2-152-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_v2_152/classification/4) | 
| ResNet V1 50 | `tensorflow-ic-imagenet-resnet-v1-50-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_v1_50/classification/4) | 
| ResNet V1 101 | `tensorflow-ic-imagenet-resnet-v1-101-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_v1_101/classification/4) | 
| ResNet V1 152 | `tensorflow-ic-imagenet-resnet-v1-152-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_v1_152/classification/4) | 
| ResNet 50 | `tensorflow-ic-imagenet-resnet-50-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/resnet_50/classification/1) | 
| EfficientNet B0 | `tensorflow-ic-efficientnet-b0-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b0/classification/1) | 
| EfficientNet B1 | `tensorflow-ic-efficientnet-b1-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b1/classification/1) | 
| EfficientNet B2 | `tensorflow-ic-efficientnet-b2-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b2/classification/1) | 
| EfficientNet B3 | `tensorflow-ic-efficientnet-b3-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b3/classification/1) | 
| EfficientNet B4 | `tensorflow-ic-efficientnet-b4-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b4/classification/1) | 
| EfficientNet B5 | `tensorflow-ic-efficientnet-b5-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b5/classification/1) | 
| EfficientNet B6 | `tensorflow-ic-efficientnet-b6-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b6/classification/1) | 
| EfficientNet B7 | `tensorflow-ic-efficientnet-b7-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/efficientnet/b7/classification/1) | 
| EfficientNet B0 Lite | `tensorflow-ic-efficientnet-lite0-classification-2` | [TensorFlow Lien vers le hub](https://tfhub.dev/tensorflow/efficientnet/lite0/classification/2) | 
| EfficientNet B1 Lite | `tensorflow-ic-efficientnet-lite1-classification-2` | [TensorFlow Lien vers le hub](https://tfhub.dev/tensorflow/efficientnet/lite1/classification/2) | 
| EfficientNet B2 Lite | `tensorflow-ic-efficientnet-lite2-classification-2` | [TensorFlow Lien vers le hub](https://tfhub.dev/tensorflow/efficientnet/lite2/classification/2) | 
| EfficientNet B3 Lite | `tensorflow-ic-efficientnet-lite3-classification-2` | [TensorFlow Lien vers le hub](https://tfhub.dev/tensorflow/efficientnet/lite3/classification/2) | 
| EfficientNet B4 Lite | `tensorflow-ic-efficientnet-lite4-classification-2` | [TensorFlow Lien vers le hub](https://tfhub.dev/tensorflow/efficientnet/lite4/classification/2) | 
| MobileNet V1 1,00 224 | `tensorflow-ic-imagenet-mobilenet-v1-100-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/4) | 
| MobileNet V1 1,00 192 | `tensorflow-ic-imagenet-mobilenet-v1-100-192-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_100_192/classification/4) | 
| MobileNet V1 1,00 160 | `tensorflow-ic-imagenet-mobilenet-v1-100-160-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_100_160/classification/4) | 
| MobileNet V1 1,00 128 | `tensorflow-ic-imagenet-mobilenet-v1-100-128-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_100_128/classification/4) | 
| MobileNet V1 0,75 224 | `tensorflow-ic-imagenet-mobilenet-v1-075-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_075_224/classification/4) | 
| MobileNet V1 0,75 192 | `tensorflow-ic-imagenet-mobilenet-v1-075-192-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_075_192/classification/4) | 
| MobileNet V1 0,75 160 | `tensorflow-ic-imagenet-mobilenet-v1-075-160-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_075_160/classification/4) | 
| MobileNet V1 0,75 128 | `tensorflow-ic-imagenet-mobilenet-v1-075-128-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_075_128/classification/4) | 
| MobileNet V1 0,50 224 | `tensorflow-ic-imagenet-mobilenet-v1-050-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_050_224/classification/4) | 
| MobileNet V1 0,50 192 | `tensorflow-ic-imagenet-mobilenet-v1-050-192-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_050_192/classification/4) | 
| MobileNet V1 1,00 160 | `tensorflow-ic-imagenet-mobilenet-v1-050-160-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_050_160/classification/4) | 
| MobileNet V1 0,50 128 | `tensorflow-ic-imagenet-mobilenet-v1-050-128-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_050_128/classification/4) | 
| MobileNet V1 0,25 224 | `tensorflow-ic-imagenet-mobilenet-v1-025-224-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_025_224/classification/4) | 
| MobileNet V1 0,25 192 | `tensorflow-ic-imagenet-mobilenet-v1-025-192-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_025_192/classification/4) | 
| MobileNet V1 0,25 160 | `tensorflow-ic-imagenet-mobilenet-v1-025-160-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_025_160/classification/4) | 
| MobileNet V1 0,25 128 | `tensorflow-ic-imagenet-mobilenet-v1-025-128-classification-4` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/imagenet/mobilenet_v1_025_128/classification/4) | 
| BiT-S R50x1 | `tensorflow-ic-bit-s-r50x1-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/s-r50x1/ilsvrc2012_classification/1) | 
| BiT-S R50x3 | `tensorflow-ic-bit-s-r50x3-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/s-r50x3/ilsvrc2012_classification/1) | 
| BiT-S R101x1 | `tensorflow-ic-bit-s-r101x1-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/s-r101x1/ilsvrc2012_classification/1) | 
| BiT-S R101x3 | `tensorflow-ic-bit-s-r101x3-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/s-r101x3/ilsvrc2012_classification/1) | 
| BiT-M R50x1 | `tensorflow-ic-bit-m-r50x1-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r50x1/ilsvrc2012_classification/1) | 
| BiT-M R50x3 | `tensorflow-ic-bit-m-r50x3-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r50x3/ilsvrc2012_classification/1) | 
| BiT-M R101x1 | `tensorflow-ic-bit-m-r101x1-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r101x1/ilsvrc2012_classification/1) | 
| BiT-M R101x3 | `tensorflow-ic-bit-m-r101x3-ilsvrc2012-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r101x3/ilsvrc2012_classification/1) | 
| Bit-M R50x1 -21 k ImageNet | `tensorflow-ic-bit-m-r50x1-imagenet21k-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r50x1/imagenet21k_classification/1) | 
| Bit-M R50x3 -21 k ImageNet | `tensorflow-ic-bit-m-r50x3-imagenet21k-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r50x3/imagenet21k_classification/1) | 
| Bit-M R101 x 1 -21 k ImageNet | `tensorflow-ic-bit-m-r101x1-imagenet21k-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r101x1/imagenet21k_classification/1) | 
| Bit-M R101x3 -21 k ImageNet | `tensorflow-ic-bit-m-r101x3-imagenet21k-classification-1` | [TensorFlow Lien vers le hub](https://tfhub.dev/google/bit/m-r101x3/imagenet21k_classification/1) | 

# Classification des images - TensorFlow Hyperparamètres
<a name="IC-TF-Hyperparameter"></a>

Les hyperparamètres sont des paramètres définis avant qu'un modèle de machine learning ne commence à apprendre. Les hyperparamètres suivants sont pris en charge par l' TensorFlow algorithme intégré de classification des images d'Amazon SageMaker AI. Consultez [Régler une classification d'images - TensorFlow modèle](IC-TF-tuning.md) pour obtenir des informations sur le réglage des hyperparamètres. 


| Nom du paramètre | Description | 
| --- | --- | 
| augmentation |  Définissez la valeur `"True"` pour appliquer `augmentation_random_flip`, `augmentation_random_rotation` et `augmentation_random_zoom` aux données d'entraînement.  Valeurs valides : chaîne, valeur : (`"True"` ou `"False"`). Valeur par défaut : `"False"`.  | 
| augmentation\$1random\$1flip |  Indique le mode de retournement à utiliser pour l'augmentation des données lorsque `augmentation` a pour valeur `"True"`. Pour plus d'informations, consultez [RandomFlip](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomFlip)la TensorFlow documentation. Valeurs valides : chaîne, l'une des valeurs suivantes : (`"horizontal_and_vertical"`, `"vertical"` ou `"None"`). Valeur par défaut : `"horizontal_and_vertical"`.  | 
| augmentation\$1random\$1rotation |  Indique le degré de rotation à utiliser pour l'augmentation des données lorsque `augmentation` a pour valeur `"True"`. Les valeurs représentent des fractions de 2π. Les valeurs positives effectuent une rotation dans le sens inverse des aiguilles d'une montre, tandis que les valeurs négatives effectuent une rotation dans le sens horaire. `0` signifie une absence de rotation. Pour plus d'informations, consultez [RandomRotation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomRotation)la TensorFlow documentation. Valeurs valides : valeur à virgule flottante, plage : [`-1.0`, `1.0`]. Valeur par défaut : `0.2`.  | 
| augmentation\$1random\$1zoom |  Indique le niveau de zoom vertical à utiliser pour l'augmentation des données lorsque `augmentation` a pour valeur `"True"`. Les valeurs positives effectuent un zoom arrière tandis que les valeurs négatives effectuent un zoom avant. `0`signifie une absence de zoom. Pour plus d'informations, consultez [RandomZoom](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomZoom)la TensorFlow documentation. Valeurs valides : valeur à virgule flottante, plage : [`-1.0`, `1.0`]. Valeur par défaut : `0.1`.  | 
| batch\$1size |  Taille de lot pour l'entraînement. Pour la formation sur des instances comportant plusieurs instances GPUs, cette taille de lot est utilisée sur l'ensemble du GPUs.  Valeurs valides : nombre entier positif. Valeur par défaut : `32`.  | 
| beta\$11 |  Version beta1 de l'optimiseur `"adam"`. Représente le taux de dégradation exponentielle pour les estimations du premier moment. Ignoré pour les autres optimiseurs. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.9`.  | 
| beta\$12 |  Version beta2 de l'optimiseur `"adam"`. Représente le taux de dégradation exponentielle pour les estimations du second moment. Ignoré pour les autres optimiseurs. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.999`.  | 
| binary\$1mode |  Lorsque `binary_mode` est défini sur `"True"`, le modèle renvoie un seul nombre de probabilité pour la classe positive et peut utiliser des options `eval_metric` supplémentaires. À utiliser uniquement pour les problèmes de classification binaire. Valeurs valides : chaîne, valeur : (`"True"` ou `"False"`). Valeur par défaut : `"False"`.  | 
| dropout\$1rate | Taux d'abandon pour la couche d'abandon au niveau de la couche de classification supérieure. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.2` | 
| early\$1stopping |  Définissez ce paramètre sur `"True"` pour utiliser une logique d'arrêt anticipé au cours de l'entraînement. S'il a pour valeur `"False"`, l'arrêt anticipé n'est pas utilisé. Valeurs valides : chaîne, valeur : (`"True"` ou `"False"`). Valeur par défaut : `"False"`.  | 
| early\$1stopping\$1min\$1delta | Modification minimale requise pour être considérée comme une amélioration. Une modification absolue inférieure à la valeur de early\$1stopping\$1min\$1delta ne constitue pas une amélioration. Utilisé uniquement quand early\$1stopping a pour valeur "True".Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`].Valeur par défaut : `0.0`. | 
| early\$1stopping\$1patience |  Nombre d'époques pour continuer l'entraînement sans amélioration. Utilisé uniquement quand `early_stopping` a pour valeur `"True"`. Valeurs valides : nombre entier positif. Valeur par défaut : `5`.  | 
| epochs |  Nombre de dates epoch d'entraînement. Valeurs valides : nombre entier positif. Valeur par défaut : `3`.  | 
| epsilon |  Epsilon des optimiseurs `"adam"`, `"rmsprop"`, `"adadelta"` et `"adagrad"`. Généralement défini sur une petite valeur pour éviter la division par 0. Ignoré pour les autres optimiseurs. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `1e-7`.  | 
| eval\$1metric |  Si `binary_mode` est défini sur `"False"`, `eval_metric` ne peut être que `"accuracy"`. Si `binary_mode` est `"True"`, sélectionnez l'une des valeurs valides. Pour plus d'informations, consultez la section [Métriques](https://www.tensorflow.org/api_docs/python/tf/keras/metrics) dans la TensorFlow documentation. Valeurs valides : chaîne, l'une des valeurs suivantes : (`"accuracy"`, `"precision"`, `"recall"`, `"auc"` ou `"prc"`). Valeur par défaut : `"accuracy"`.  | 
| image\$1resize\$1interpolation |  Indique la méthode d'interpolation utilisée lors du redimensionnement des images. Pour plus d'informations, consultez [image.resize dans la documentation](https://www.tensorflow.org/api_docs/python/tf/image/resize). TensorFlow  Valeurs valides : chaîne, l'une des valeurs suivantes : (`"bilinear"`, `"nearest"`, `"bicubic"`, `"area"`, ` "lanczos3"`, `"lanczos5"`, `"gaussian"` ou `"mitchellcubic"`). Valeur par défaut : `"bilinear"`.  | 
| initial\$1accumulator\$1value |  Valeur de départ pour les accumulateurs, ou valeurs de moment par paramètre, pour l'optimiseur `"adagrad"`. Ignoré pour les autres optimiseurs. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.0001`.  | 
| label\$1smoothing |  Indique dans quelle mesure relaxer la confiance sur les valeurs des étiquettes. Par exemple, si `label_smoothing` a pour valeur `0.1`, les étiquettes non ciblées sont `0.1/num_classes ` et les étiquettes ciblées sont `0.9+0.1/num_classes`.  Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.1`.  | 
| learning\$1rate | Taux d'apprentissage de l'optimiseur. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`].Valeur par défaut : `0.001`. | 
| momentum |  Moment pour les optimiseurs `"sgd"`, `"nesterov"` et `"rmsprop"`. Ignoré pour les autres optimiseurs. Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.9`.  | 
| optimizer |  Type d'optimiseur. Pour plus d'informations, consultez la section [Optimiseurs](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers) dans la TensorFlow documentation. Valeurs valides : chaîne, l'une des valeurs suivantes : (`"adam"`, `"sgd"`, `"nesterov"`, `"rmsprop"`, ` "adagrad"`, `"adadelta"`). Valeur par défaut : `"adam"`.  | 
| regularizers\$1l2 |  Facteur de régularisation L2 pour la couche dense au niveau de la couche de classification.  Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `.0001`.  | 
| reinitialize\$1top\$1layer |  Si ce paramètre a pour valeur `"Auto"`, les paramètres de la couche de classification supérieure sont réinitialisés au cours de l'affinage. Pour l'entraînement incrémentiel, les paramètres de la couche de classification supérieure ne sont pas réinitialisés à moins d'être définis sur `"True"`. Valeurs valides : chaîne, l'une des valeurs suivantes : (`"Auto"`, `"True"` ou `"False"`). Valeur par défaut : `"Auto"`.  | 
| rho |  Facteur de déduction pour le gradient des optimiseurs `"adadelta"` et `"rmsprop"`. Ignoré pour les autres optimiseurs.  Valeurs valides : valeur à virgule flottante, plage : [`0.0`, `1.0`]. Valeur par défaut : `0.95`.  | 
| train\$1only\$1top\$1layer |  S'il a pour valeur `"True"`, seuls les paramètres de la couche de classification supérieure sont ajustés. S'il a pour valeur `"False"`, tous les paramètres du modèle sont affinés. Valeurs valides : chaîne, valeur : (`"True"` ou `"False"`). Valeur par défaut : `"False"`.  | 

# Régler une classification d'images - TensorFlow modèle
<a name="IC-TF-tuning"></a>

Le *réglage de modèle automatique*, ou réglage d'hyperparamètre, détecte la meilleure version d'un modèle en exécutant plusieurs tâches qui testent une plage d'hyperparamètres sur votre jeu de données. Vous choisissez les hyperparamètres réglables, une plage de valeurs pour chacun d'eux et une métrique d'objectif. Vous choisissez la métrique d'objectif parmi les métriques que calcule l'algorithme. Le réglage de modèle automatique recherche parmi les hyperparamètres choisis la combinaison de valeurs qui produira un modèle permettant d'optimiser la métrique d'objectif.

Pour plus d'informations sur le réglage de modèle, consultez [Réglage automatique du modèle grâce à l' SageMaker IA](automatic-model-tuning.md).

## Métriques calculées par l' TensorFlow algorithme de classification des images
<a name="IC-TF-metrics"></a>

L'algorithme de classification des images est un algorithme supervisé. Il fournit une métrique de précision qui est calculée au cours de l'entraînement. Lors du réglage du modèle, choisissez cette métrique comme objectif.


| Nom de la métrique | Description | Orientation de l'optimisation | 
| --- | --- | --- | 
| validation:accuracy | Rapport entre le nombre de prédictions correctes et le nombre total de prédictions effectuées. | Agrandir | 

## Classification d'images réglable - hyperparamètres TensorFlow
<a name="IC-TF-tunable-hyperparameters"></a>

Réglez un modèle de classification des images à l'aide des hyperparamètres ci-dessous. Les hyperparamètres ayant le plus grand impact sur les métriques d'objectif de la classification des images sont les suivants : `batch_size`, `learning_rate` et `optimizer`. Réglez les hyperparamètres associés à l'optimiseur, tels que `momentum`, `regularizers_l2`, `beta_1`, `beta_2` et `eps`, en fonction de l'`optimizer` sélectionné. Par exemple, utilisez `beta_1` et `beta_2` uniquement si `adam` = `optimizer`.

Pour plus d'informations sur les hyperparamètres qui sont utilisés pour chaque `optimizer`, consultez [Classification des images - TensorFlow Hyperparamètres](IC-TF-Hyperparameter.md).


| Nom du paramètre | Type de paramètre | Plages recommandées | 
| --- | --- | --- | 
| batch\$1size | IntegerParameterRanges | MinValue: 8, MaxValue 512 | 
| beta\$11 | ContinuousParameterRanges | MinValue: 1e-6, 0,99 MaxValue | 
| beta\$12 | ContinuousParameterRanges | MinValue: 1e-6, 0,99 MaxValue | 
| eps | ContinuousParameterRanges | MinValue: 1e-8, MaxValue : 1,0 | 
| learning\$1rate | ContinuousParameterRanges | MinValue: 1e-6, 0,5 MaxValue | 
| momentum | ContinuousParameterRanges | MinValue: 0,0, MaxValue 0,99 | 
| optimizer | CategoricalParameterRanges | ['sgd', ‘adam’, ‘rmsprop’, 'nesterov', 'adagrad', 'adadelta'] | 
| regularizers\$1l2 | ContinuousParameterRanges | MinValue: 0,0, MaxValue 0,99 | 
| train\$1only\$1top\$1layer | ContinuousParameterRanges | ['True', 'False'] | 