

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Classificação de imagens - TensorFlow
<a name="image-classification-tensorflow"></a>

[O algoritmo Amazon SageMaker Image Classification - é um TensorFlow algoritmo de aprendizado supervisionado que oferece suporte ao aprendizado por transferência com muitos modelos pré-treinados do TensorFlow Hub.](https://tfhub.dev/s?fine-tunable=yes&module-type=image-classification&subtype=module,placeholder&tf-version=tf2) Use transferir aprendizado para ajustar um dos modelos pré-treinados disponíveis em seu próprio conjunto de dados, mesmo que uma grande quantidade de dados de imagem não esteja disponível. O algoritmo de classificação de imagens usa uma imagem como entrada e gera uma probabilidade para cada um dos rótulos de classe. Os conjuntos de dados de treinamento devem consistir em imagens no formato .jpg, .jpeg ou .png. Esta página inclui informações sobre recomendações de instâncias do Amazon EC2 e exemplos de notebooks para classificação de imagens -. TensorFlow

**Topics**
+ [Como usar o TensorFlow algoritmo SageMaker de Classificação de Imagens](IC-TF-how-to-use.md)
+ [Interface de entrada e saída para o TensorFlow algoritmo de classificação de imagens](IC-TF-inputoutput.md)
+ [Recomendação de instância do Amazon EC2 para o algoritmo de classificação de imagens TensorFlow](#IC-TF-instances)
+ [Classificação de imagens - TensorFlow exemplos de cadernos](#IC-TF-sample-notebooks)
+ [Como TensorFlow funciona a classificação de imagens](IC-TF-HowItWorks.md)
+ [TensorFlow Modelos de hub](IC-TF-Models.md)
+ [Classificação de imagens - TensorFlow Hiperparâmetros](IC-TF-Hyperparameter.md)
+ [Ajustar uma classificação de imagens - TensorFlow modelo](IC-TF-tuning.md)

# Como usar o TensorFlow algoritmo SageMaker de Classificação de Imagens
<a name="IC-TF-how-to-use"></a>

Você pode usar o Image Classification - TensorFlow como um algoritmo integrado de SageMaker IA da Amazon. A seção a seguir descreve como usar a Classificação de imagens TensorFlow com o SageMaker SDK AI Python. Para obter informações sobre como usar a classificação de imagens — TensorFlow da interface do usuário do Amazon SageMaker Studio Classic, consulte[SageMaker JumpStart modelos pré-treinados](studio-jumpstart.md).

O TensorFlow algoritmo de classificação de imagens oferece suporte ao aprendizado por transferência usando qualquer um dos modelos de TensorFlow Hub pré-treinados compatíveis. Para obter uma lista de todos os modelos pré-treinados disponíveis, consulte [TensorFlow Modelos de hub](IC-TF-Models.md). Cada modelo pré-treinado tem um `model_id` exclusivo. O exemplo a seguir usa MobileNet V2 1.00 224 (`model_id`:`tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4`) para ajustar um conjunto de dados personalizado. Os modelos pré-treinados são todos pré-baixados do TensorFlow Hub e armazenados em buckets do Amazon S3 para que os trabalhos de treinamento possam ser executados isoladamente na rede. Use esses artefatos de treinamento de modelos pré-gerados para criar um estimador de SageMaker IA.

Primeiro, recupere o URI da imagem do Docker, o URI do script de treinamento e o URI do modelo pré-treinado. Em seguida, altere os hiperparâmetros conforme desejar. Você pode ver um dicionário Python de todos os hiperparâmetros disponíveis e seus valores padrão com `hyperparameters.retrieve_default`. Para obter mais informações, consulte [Classificação de imagens - TensorFlow Hiperparâmetros](IC-TF-Hyperparameter.md). Use esses valores para criar um estimador de SageMaker IA.

**nota**  
Os valores padrão dos hiperparâmetros são diferentes para modelos diferentes. Para modelos maiores, o tamanho padrão do lote é menor e o hiperparâmetro `train_only_top_layer` está definido como `"True"`.

Este exemplo usa o conjunto de dados [https://www.tensorflow.org/datasets/catalog/tf_flowers](https://www.tensorflow.org/datasets/catalog/tf_flowers), que contém cinco classes de imagens de flores. Nós pré-baixamos o conjunto de dados TensorFlow sob a licença Apache 2.0 e o disponibilizamos com o Amazon S3. Para ajustar seu modelo, chame `.fit` usando a localização do Amazon S3 do seu conjunto de dados de treinamento.

```
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 de entrada e saída para o TensorFlow algoritmo de classificação de imagens
<a name="IC-TF-inputoutput"></a>

Cada um dos modelos pré-treinados listados em TensorFlow Hub Models pode ser ajustado a qualquer conjunto de dados com qualquer número de classes de imagem. Lembre-se de como formatar seus dados de treinamento para entrada no TensorFlow modelo de Classificação de Imagens.
+ **Formato de entrada de dados de treinamento:** Seus dados de treinamento devem ser um diretório com tantos subdiretórios quanto o número de classes. Cada subdiretório deve conter imagens pertencentes a essa classe no formato .jpg, .jpeg ou .png.

Veja a seguir um exemplo de uma estrutura de diretório de entrada. Esse exemplo de conjunto de dados tem duas classes: `roses` e `dandelion`. Os arquivos de imagem em cada pasta de classe podem ter qualquer nome. O diretório de entrada deve ser hospedado em um bucket do Amazon S3 com um caminho semelhante ao seguinte: `s3://bucket_name/input_directory/`. Observe que o rastreamento `/` é obrigatório.

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

Modelos treinados geram arquivos de mapeamento de rótulos que mapeiam nomes de pastas de classes para os índices na lista de probabilidades de classes de saída. Esse mapeamento está em ordem alfabética. Por exemplo, no exemplo anterior, a classe dente-de-leão é índice 0 e a classe rosas é índice 1. 

Após o treinamento, você tem um modelo ajustado que pode ser treinado ainda mais usando treinamento incremental ou implantado para inferência. O TensorFlow algoritmo de classificação de imagens adiciona automaticamente uma assinatura de pré-processamento e pós-processamento ao modelo ajustado para que ele possa capturar imagens como entrada e retornar probabilidades de classe. O arquivo que mapeia índices de classe para rótulos de classe é salvo junto com os modelos. 

## Treinamento incremental
<a name="IC-TF-incremental-training"></a>

Você pode semear o treinamento de um novo modelo com artefatos de um modelo que você treinou anteriormente com SageMaker IA. Um treinamento incremental economiza tempo de treinamento quando você deseja treinar um novo modelo com dados iguais ou semelhantes.

**nota**  
Você só pode semear um modelo de Classificação de SageMaker Imagem com outro TensorFlow modelo de Classificação de Imagem treinado em SageMaker IA. TensorFlow 

Você pode usar qualquer conjunto de dados para treinamento incremental, desde que o conjunto de classes permaneça o mesmo. A etapa de treinamento incremental é semelhante à etapa de ajuste, mas em vez de começar com um modelo pré-treinado, você começa com um modelo já ajustado. Para ver um exemplo de treinamento incremental com o TensorFlow algoritmo SageMaker AI Image Classification, consulte o caderno de amostra [Introdução à SageMaker TensorFlow Classificação de Imagens](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

## Inferência com o algoritmo de classificação de imagens TensorFlow
<a name="IC-TF-inference"></a>

Você pode hospedar o modelo ajustado que resulta do seu treinamento de Classificação de TensorFlow Imagens para inferência. Qualquer imagem de entrada para inferência deve estar em formato `.jpg`, .`jpeg`, ou `.png` e deve do ser tipo de conteúdo `application/x-image`. O TensorFlow algoritmo de classificação de imagens redimensiona as imagens de entrada automaticamente. 

A execução da inferência resulta em valores de probabilidade, rótulos de classe para todas as classes e o rótulo previsto correspondente ao índice da classe com a maior probabilidade codificada no formato JSON. O TensorFlow modelo de classificação de imagens processa uma única imagem por solicitação e gera somente uma linha. Veja a seguir um exemplo de resposta no formato JSON.

```
accept: application/json;verbose

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

Se `accept` estiver definido como `application/json`, o modelo só gera probabilidades. Para obter mais informações sobre treinamento e inferência com o TensorFlow algoritmo de Classificação de Imagens, consulte o caderno de amostra [Introdução à SageMaker TensorFlow Classificação de Imagens](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

## Recomendação de instância do Amazon EC2 para o algoritmo de classificação de imagens TensorFlow
<a name="IC-TF-instances"></a>

O TensorFlow algoritmo de classificação de imagens oferece suporte a todas as instâncias de CPU e GPU para treinamento, incluindo:
+ `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`

Recomendamos o uso de instâncias de GPU com mais memória para treinamento com grandes tamanhos de lote. Tanto as instâncias de CPU (como M5) quanto as de GPU (P2, P3, G4dn ou G5) podem ser usadas para inferência.

## Classificação de imagens - TensorFlow exemplos de cadernos
<a name="IC-TF-sample-notebooks"></a>

Para obter mais informações sobre como usar o TensorFlow algoritmo de Classificação de SageMaker Imagens para transferir o aprendizado em um conjunto de dados personalizado, consulte o caderno [Introdução à SageMaker TensorFlow Classificação de Imagens](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo em SageMaker IA, consulte. [Instâncias de SageMaker notebook da Amazon](nbi.md) Depois de criar uma instância do notebook e abri-la, selecione a guia **Exemplos de SageMaker IA** para ver uma lista de todas as amostras de SageMaker IA. Para abrir um caderno, escolha a guia **Uso** e depois escolha **Criar cópia**.

# Como TensorFlow funciona a classificação de imagens
<a name="IC-TF-HowItWorks"></a>

O TensorFlow algoritmo Image Classification - pega uma imagem como entrada e a classifica em um dos rótulos da classe de saída. Várias redes de aprendizado profundo MobileNet, como, ResNet, Inception e, EfficientNet são altamente precisas para classificação de imagens. Também existem redes de aprendizado profundo que são treinadas em grandes conjuntos de dados de imagens, como, por exemplo ImageNet, que tem mais de 11 milhões de imagens e quase 11.000 aulas. Depois que uma rede é treinada com ImageNet dados, você pode então ajustar a rede em um conjunto de dados com um foco específico para realizar tarefas de classificação mais específicas. O TensorFlow algoritmo Amazon SageMaker Image Classification suporta o aprendizado por transferência em muitos modelos pré-treinados que estão disponíveis no TensorFlow Hub.

De acordo com o número de rótulos de classe em seus dados de treinamento, uma camada de classificação é anexada ao modelo TensorFlow Hub pré-treinado de sua escolha. A camada de classificação consiste em uma camada suspensa, uma camada densa e uma camada totalmente conectada com regularizador de duas normas e é inicializada com pesos aleatórios. O modelo tem hiperparâmetros para a taxa de eliminação da camada de eliminação e o fator de regularização L2 para a camada densa. Você pode, então, ajustar toda a rede (incluindo o modelo pré-treinado) ou somente a camada de classificação superior nos novos dados de treinamento. Com esse método de transferência de aprendizado, é possível treinar com conjuntos de dados menores.

# TensorFlow Modelos de hub
<a name="IC-TF-Models"></a>

Os seguintes modelos pré-treinados estão disponíveis para uso no aprendizado por transferência com o TensorFlow algoritmo de Classificação de Imagens. 

Os modelos a seguir variam significativamente em tamanho, número de parâmetros do modelo, tempo de treinamento e latência de inferência para qualquer conjunto de dados. O melhor modelo para seu caso de uso depende da complexidade do seu conjunto de dados de ajuste fino e de quaisquer requisitos que você tenha sobre tempo de treinamento, latência de inferência ou precisão do modelo.


| Nome do modelo | `model_id` | Fonte | 
| --- | --- | --- | 
| MobileNet V2 1.0 224 | `tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4` | [TensorFlow Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do hub](https://tfhub.dev/google/imagenet/mobilenet_v2_130_224/classification/4) | 
| MobileNet V2 | `tensorflow-ic-tf2-preview-mobilenet-v2-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/tf2-preview/mobilenet_v2/classification/4) | 
| Inception V3 | `tensorflow-ic-imagenet-inception-v3-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/inception_v3/classification/4) | 
| Inception V2 | `tensorflow-ic-imagenet-inception-v2-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/inception_v2/classification/4) | 
| Inception V1 | `tensorflow-ic-imagenet-inception-v1-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/inception_v1/classification/4) | 
| Prévia do Inception V3 | `tensorflow-ic-tf2-preview-inception-v3-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/tf2-preview/inception_v3/classification/4) | 
| Início V2 ResNet  | `tensorflow-ic-imagenet-inception-resnet-v2-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/inception_resnet_v2/classification/4) | 
| ResNet V2 50 | `tensorflow-ic-imagenet-resnet-v2-50-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_v2_50/classification/4) | 
| ResNet V2 101 | `tensorflow-ic-imagenet-resnet-v2-101-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_v2_101/classification/4) | 
| ResNet V2 152 | `tensorflow-ic-imagenet-resnet-v2-152-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_v2_152/classification/4) | 
| ResNet V1 50 | `tensorflow-ic-imagenet-resnet-v1-50-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_v1_50/classification/4) | 
| ResNet V1 101 | `tensorflow-ic-imagenet-resnet-v1-101-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_v1_101/classification/4) | 
| ResNet V1 152 | `tensorflow-ic-imagenet-resnet-v1-152-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_v1_152/classification/4) | 
| ResNet 50 | `tensorflow-ic-imagenet-resnet-50-classification-4` | [TensorFlow Link do hub](https://tfhub.dev/google/imagenet/resnet_50/classification/1) | 
| EfficientNet B0 | `tensorflow-ic-efficientnet-b0-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b0/classification/1) | 
| EfficientNet B1 | `tensorflow-ic-efficientnet-b1-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b1/classification/1) | 
| EfficientNet B2 | `tensorflow-ic-efficientnet-b2-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b2/classification/1) | 
| EfficientNet B3 | `tensorflow-ic-efficientnet-b3-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b3/classification/1) | 
| EfficientNet B4 | `tensorflow-ic-efficientnet-b4-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b4/classification/1) | 
| EfficientNet B5 | `tensorflow-ic-efficientnet-b5-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b5/classification/1) | 
| EfficientNet B6 | `tensorflow-ic-efficientnet-b6-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b6/classification/1) | 
| EfficientNet B7 | `tensorflow-ic-efficientnet-b7-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/efficientnet/b7/classification/1) | 
| EfficientNet B0 Lite | `tensorflow-ic-efficientnet-lite0-classification-2` | [TensorFlow Link do hub](https://tfhub.dev/tensorflow/efficientnet/lite0/classification/2) | 
| EfficientNet B1 Lite | `tensorflow-ic-efficientnet-lite1-classification-2` | [TensorFlow Link do hub](https://tfhub.dev/tensorflow/efficientnet/lite1/classification/2) | 
| EfficientNet B2 Lite | `tensorflow-ic-efficientnet-lite2-classification-2` | [TensorFlow Link do hub](https://tfhub.dev/tensorflow/efficientnet/lite2/classification/2) | 
| EfficientNet B3 Lite | `tensorflow-ic-efficientnet-lite3-classification-2` | [TensorFlow Link do hub](https://tfhub.dev/tensorflow/efficientnet/lite3/classification/2) | 
| EfficientNet B4 Lite | `tensorflow-ic-efficientnet-lite4-classification-2` | [TensorFlow Link do hub](https://tfhub.dev/tensorflow/efficientnet/lite4/classification/2) | 
| MobileNet V1 1.00 224 | `tensorflow-ic-imagenet-mobilenet-v1-100-224-classification-4` | [TensorFlow Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do 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 Link do hub](https://tfhub.dev/google/imagenet/mobilenet_v1_025_128/classification/4) | 
| BiT-S R50x1 | `tensorflow-ic-bit-s-r50x1-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/s-r50x1/ilsvrc2012_classification/1) | 
| BiT-S R50x3 | `tensorflow-ic-bit-s-r50x3-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/s-r50x3/ilsvrc2012_classification/1) | 
| BiT-S R101x1 | `tensorflow-ic-bit-s-r101x1-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/s-r101x1/ilsvrc2012_classification/1) | 
| BiT-S R101x3 | `tensorflow-ic-bit-s-r101x3-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/s-r101x3/ilsvrc2012_classification/1) | 
| BiT-M R50x1 | `tensorflow-ic-bit-m-r50x1-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r50x1/ilsvrc2012_classification/1) | 
| BiT-M R50x3 | `tensorflow-ic-bit-m-r50x3-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r50x3/ilsvrc2012_classification/1) | 
| BiT-M R101x1 | `tensorflow-ic-bit-m-r101x1-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r101x1/ilsvrc2012_classification/1) | 
| BiT-M R101x3 | `tensorflow-ic-bit-m-r101x3-ilsvrc2012-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r101x3/ilsvrc2012_classification/1) | 
| Bit-m R50x1 -21k ImageNet | `tensorflow-ic-bit-m-r50x1-imagenet21k-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r50x1/imagenet21k_classification/1) | 
| Bit-m R50x3 -21k ImageNet | `tensorflow-ic-bit-m-r50x3-imagenet21k-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r50x3/imagenet21k_classification/1) | 
| Bit-m R101x1 -21k ImageNet | `tensorflow-ic-bit-m-r101x1-imagenet21k-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r101x1/imagenet21k_classification/1) | 
| Bit-m R101x3 -21k ImageNet | `tensorflow-ic-bit-m-r101x3-imagenet21k-classification-1` | [TensorFlow Link do hub](https://tfhub.dev/google/bit/m-r101x3/imagenet21k_classification/1) | 

# Classificação de imagens - TensorFlow Hiperparâmetros
<a name="IC-TF-Hyperparameter"></a>

Hiperparâmetros são parâmetros definidos antes de um modelo de machine learning começar a aprender. Os hiperparâmetros a seguir são compatíveis com o TensorFlow algoritmo de Classificação de Imagem incorporado ao Amazon SageMaker AI. Para obter informações sobre ajuste de hiperparâmetros, consulte [Ajustar uma classificação de imagens - TensorFlow modelo](IC-TF-tuning.md). 


| Nome do parâmetro | Description | 
| --- | --- | 
| augmentation |  Defina `"True"` para aplicar `augmentation_random_flip`, `augmentation_random_rotation` e `augmentation_random_zoom` nos dados de treinamento.  Valores válidos: string, ou: (`"True"` ou `"False"`). Valor padrão: `"False"`.  | 
| augmentation\$1random\$1flip |  Indica qual modo de inversão usar para aumentar os dados quando `augmentation` está definido como `"True"`. Para obter mais informações, consulte [RandomFlip](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomFlip)a TensorFlow documentação. Valores válidos: string, qualquer um dos seguintes: (`"horizontal_and_vertical"`, `"vertical"` ou `"None"`). Valor padrão: `"horizontal_and_vertical"`.  | 
| augmentation\$1random\$1rotation |  Indica quanta rotação usar para aumentar os dados quando `augmentation` está definido como `"True"`. Os valores representam uma fração de 2π. Valores positivos giram no sentido anti-horário, enquanto valores negativos giram no sentido horário. `0` significa nenhuma rotação. Para obter mais informações, consulte [RandomRotation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomRotation)a TensorFlow documentação. Valores válidos: flutuante, intervalo: [`-1.0`, `1.0`]. Valor padrão: `0.2`.  | 
| augmentation\$1random\$1zoom |  Indica quanto zoom vertical usar para aumentar os dados quando `augmentation` está definido como `"True"`. Os valores positivos reduzem o zoom, enquanto os valores negativos ampliam o zoom. `0` significa que não há zoom. Para obter mais informações, consulte [RandomZoom](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomZoom)a TensorFlow documentação. Valores válidos: flutuante, intervalo: [`-1.0`, `1.0`]. Valor padrão: `0.1`.  | 
| batch\$1size |  O tamanho do lote para treinamento. Para treinamento em instâncias com várias GPUs, esse tamanho de lote é usado em todo GPUs o.  Valores válidos: inteiro positivo. Valor padrão: `32`.  | 
| beta\$11 |  O beta1 para o otimizador `"adam"`. Representa a taxa de degradação exponencial para as estimativas de primeiro momento. Ignorado por outros otimizadores. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.9`.  | 
| beta\$12 |  O beta2 para o otimizador `"adam"`. Representa a taxa de degradação exponencial para as estimativas de segundo momento. Ignorado por outros otimizadores. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.999`.  | 
| binary\$1mode |  Quando `binary_mode` é definido como `"True"`, o modelo retorna um único número de probabilidade para a classe positiva e pode usar `eval_metric` opções adicionais. Use somente para problemas de classificação binária. Valores válidos: string, ou: (`"True"` ou `"False"`). Valor padrão: `"False"`.  | 
| dropout\$1rate | A taxa de eliminação da camada de eliminação na camada de classificação superior. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.2` | 
| early\$1stopping |  Defina para `"True"` para usar a lógica de interrupção antecipada durante o treinamento. Se `"False"`, a interrupção antecipada não é usada. Valores válidos: string, ou: (`"True"` ou `"False"`). Valor padrão: `"False"`.  | 
| early\$1stopping\$1min\$1delta | A alteração mínima necessária para se qualificar como uma melhoria. Uma mudança absoluta menor que o valor de early\$1stopping\$1min\$1delta não se qualifica como melhoria. Usado somente quando early\$1stopping for definido como "True".Valores válidos: flutuante, intervalo: [`0.0`, `1.0`].Valor padrão: `0.0`. | 
| early\$1stopping\$1patience |  O número de épocas para continuar treinando sem melhorias. Usado somente quando `early_stopping` for definido como `"True"`. Valores válidos: inteiro positivo. Valor padrão: `5`.  | 
| epochs |  O número de epochs de treinamento. Valores válidos: inteiro positivo. Valor padrão: `3`.  | 
| epsilon |  O épsilon para os otimizadores `"adam"`, `"rmsprop"`, `"adadelta"` e `"adagrad"`. Geralmente é definido como um valor baixo, para evitar a divisão por 0. Ignorado por outros otimizadores. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `1e-7`.  | 
| eval\$1metric |  Se `binary_mode` for definido como `"False"`, `eval_metric` só pode ser `"accuracy"`. Se `binary_mode` for `"True"`, selecione qualquer um dos valores válidos. Para obter mais informações, consulte [Métricas](https://www.tensorflow.org/api_docs/python/tf/keras/metrics) na TensorFlow documentação. Valores válidos: string, qualquer um dos seguintes: (`"accuracy"`, `"precision"`, `"recall"`, `"auc"` ou `"prc"`). Valor padrão: `"accuracy"`.  | 
| image\$1resize\$1interpolation |  Indica o método de interpolação usado ao redimensionar imagens. Para obter mais informações, consulte [image.resize](https://www.tensorflow.org/api_docs/python/tf/image/resize) na documentação. TensorFlow  Valores válidos: string, qualquer um dos seguintes: (`"bilinear"`, `"nearest"`, `"bicubic"`, `"area"`,` "lanczos3"` , `"lanczos5"`, `"gaussian"`ou `"mitchellcubic"`). Valor padrão: `"bilinear"`.  | 
| initial\$1accumulator\$1value |  O valor inicial para os acumuladores, ou os valores de momentum por parâmetro, para o otimizador `"adagrad"`. Ignorado por outros otimizadores. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.0001`.  | 
| label\$1smoothing |  Indica o quanto relaxar a confiança nos valores do rótulo. Por exemplo, se `label_smoothing` for `0.1`, os rótulos que não são de destino são `0.1/num_classes ` e os rótulos de destino são `0.9+0.1/num_classes`.  Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.1`.  | 
| learning\$1rate | A taxa de aprendizado do otimizador. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`].Valor padrão: `0.001`. | 
| momentum |  A dinâmica para os otimizadores `"sgd"`, `"nesterov"` e `"rmsprop"`. Ignorado por outros otimizadores. Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.9`.  | 
| optimizer |  O tipo de otimizador. Para obter mais informações, consulte [Otimizadores](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers) na TensorFlow documentação. Valores válidos: string, qualquer um dos seguintes: (`"adam"`, `"sgd"`, `"nesterov"`, `"rmsprop"`, ` "adagrad"` ou `"adadelta"`). Valor padrão: `"adam"`.  | 
| regularizers\$1l2 |  O fator de regularização L2 para a camada densa na camada de classificação.  Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `.0001`.  | 
| reinitialize\$1top\$1layer |  Se definido como `"Auto"`, os parâmetros da camada de classificação superior são reinicializados durante o ajuste fino. Para treinamento incremental, os parâmetros da camada de classificação superior não são reinicializados, a menos que sejam definidos como `"True"`. Valores válidos: string, qualquer um dos seguintes: (`"Auto"`, `"True"` ou `"False"`). Valor padrão: `"Auto"`.  | 
| rho |  O fator de desconto para o gradiente dos otimizadores `"adadelta"` e `"rmsprop"`. Ignorado por outros otimizadores.  Valores válidos: flutuante, intervalo: [`0.0`, `1.0`]. Valor padrão: `0.95`.  | 
| train\$1only\$1top\$1layer |  Se `"True"`, somente os parâmetros da camada de classificação superior forem ajustados. Se `"False"`, todos os parâmetros do modelo são ajustados. Valores válidos: string, ou: (`"True"` ou `"False"`). Valor padrão: `"False"`.  | 

# Ajustar uma classificação de imagens - TensorFlow modelo
<a name="IC-TF-tuning"></a>

O *ajuste automático de modelos*, também conhecido como ajuste de hiperparâmetros, localiza a melhor versão de um modelo executando vários trabalhos que testam uma série de hiperparâmetros no seu conjunto de dados. Você escolhe os hiperparâmetros ajustáveis, um intervalo de valores para cada um e uma métrica objetiva. Você escolhe a métrica objetiva entre as métricas que o algoritmo calcula. O ajuste de modelo automático pesquisa os hiperparâmetros escolhidos para encontrar a combinação de valores que resultam no modelo que otimiza a métrica objetiva.

Para mais informações sobre o ajuste de modelos, consulte [Ajuste automático do modelo com SageMaker IA](automatic-model-tuning.md).

## Métricas calculadas pelo algoritmo de Classificação de Imagens TensorFlow
<a name="IC-TF-metrics"></a>

O algoritmo de classificação de imagens é um algoritmo supervisionado. Ele relata uma métrica de precisão que é calculada durante o treinamento. Ao ajustar o modelo, escolha essa métrica como a métrica objetiva.


| Nome da métrica | Description | Direção de otimização | 
| --- | --- | --- | 
| validation:accuracy | A proporção do número de predições corretas para o número total de predições feitas. | Maximizar | 

## Classificação de imagem ajustável - hiperparâmetros TensorFlow
<a name="IC-TF-tunable-hyperparameters"></a>

Ajuste um modelo de classificação de imagem com os seguintes hiperparâmetros: Os hiperparâmetros que têm o maior impacto nas métricas objetivas de classificação de imagem são: `batch_size`, `learning_rate` e `optimizer`. Ajuste os hiperparâmetros relacionados com o otimizador, como `momentum`, `regularizers_l2`, `beta_1`, `beta_2` e `eps` com base no `optimizer` selecionado. Por exemplo, use `beta_1` e `beta_2` somente quando `adam` for o `optimizer`.

Para obter mais informações sobre quais hiperparâmetros são usados para cada `optimizer`, consulte [Classificação de imagens - TensorFlow Hiperparâmetros](IC-TF-Hyperparameter.md).


| Nome do parâmetro | Tipo de parâmetro | Intervalos recomendados | 
| --- | --- | --- | 
| 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'] | 