

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Clasificación de imágenes - TensorFlow
<a name="image-classification-tensorflow"></a>

El algoritmo de clasificación de SageMaker imágenes de Amazon es un TensorFlow algoritmo de aprendizaje supervisado que admite el aprendizaje por transferencia con muchos modelos previamente entrenados desde el [TensorFlow Hub](https://tfhub.dev/s?fine-tunable=yes&module-type=image-classification&subtype=module,placeholder&tf-version=tf2). Utilice el aprendizaje por transferencia para ajustar uno de los modelos previamente entrenados disponibles en su propio conjunto de datos, aunque no haya una gran cantidad de datos de imagen disponibles. El algoritmo de clasificación de imágenes toma una imagen como entrada y genera una probabilidad para cada etiqueta de clase suministrada. Los conjuntos de datos de entrenamiento deben estar compuestos por imágenes en formato .jpg, .jpeg o .png. Esta página incluye información sobre las recomendaciones de instancias de Amazon EC2 y cuadernos de muestra para Image Classification -. TensorFlow

**Topics**
+ [Cómo utilizar el algoritmo de clasificación SageMaker de imágenes TensorFlow](IC-TF-how-to-use.md)
+ [Interfaz de entrada y salida para el algoritmo de clasificación de imágenes TensorFlow](IC-TF-inputoutput.md)
+ [Recomendación de instancia de Amazon EC2 para el algoritmo de clasificación de imágenes TensorFlow](#IC-TF-instances)
+ [Clasificación de imágenes: TensorFlow ejemplos de cuadernos](#IC-TF-sample-notebooks)
+ [Cómo TensorFlow funciona la clasificación de imágenes](IC-TF-HowItWorks.md)
+ [TensorFlow Modelos Hub](IC-TF-Models.md)
+ [Clasificación de imágenes: TensorFlow hiperparámetros](IC-TF-Hyperparameter.md)
+ [Ajuste una clasificación de imágenes: modelo TensorFlow](IC-TF-tuning.md)

# Cómo utilizar el algoritmo de clasificación SageMaker de imágenes TensorFlow
<a name="IC-TF-how-to-use"></a>

Puede utilizar la clasificación de imágenes, TensorFlow como un algoritmo integrado de Amazon SageMaker AI. En la siguiente sección, se describe cómo utilizar la clasificación de imágenes TensorFlow con el SDK de Python para SageMaker IA. Para obtener información sobre cómo utilizar la clasificación de imágenes, TensorFlow desde la interfaz de usuario clásica de Amazon SageMaker Studio, consulte[SageMaker JumpStart modelos preentrenados](studio-jumpstart.md).

El TensorFlow algoritmo de clasificación de imágenes admite el aprendizaje por transferencia mediante cualquiera de los modelos TensorFlow Hub compatibles previamente entrenados. Para obtener una lista de todos los modelos prentrenados disponibles, consulte [TensorFlow Modelos Hub](IC-TF-Models.md). Cada modelo prentrenado tiene un `model_id` de modelo único. En el siguiente ejemplo, se utiliza MobileNet V2 1.00 224 (`model_id`:`tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4`) para realizar ajustes precisos en un conjunto de datos personalizado. Todos los modelos previamente entrenados se descargan previamente del TensorFlow Hub y se almacenan en buckets de Amazon S3 para que los trabajos de capacitación se puedan ejecutar de forma aislada en la red. Utilice estos artefactos de entrenamiento de modelos pregenerados para construir un estimador de IA. SageMaker 

En primer lugar, recupere el URI de la imagen de Docker, del script de entrenamiento y del modelo prentrenado. Luego, cambie los hiperparámetros como crea conveniente. Puede ver un diccionario de Python con todos los hiperparámetros disponibles y sus valores predeterminados con `hyperparameters.retrieve_default`. Para obtener más información, consulte [Clasificación de imágenes: TensorFlow hiperparámetros](IC-TF-Hyperparameter.md). Usa estos valores para construir un SageMaker estimador de IA.

**nota**  
Los valores de hiperparámetros predeterminados son diferentes para los distintos modelos. Para los modelos más grandes, el tamaño de lote predeterminado es menor y el hiperparámetro `train_only_top_layer` se establece en `"True"`.

En este ejemplo, se utiliza el conjunto de datos [https://www.tensorflow.org/datasets/catalog/tf_flowers](https://www.tensorflow.org/datasets/catalog/tf_flowers), que contiene cinco clases de imágenes de flores. Descargamos previamente el conjunto de datos TensorFlow con la licencia Apache 2.0 y lo pusimos a disposición con Amazon S3. Para ajustar su modelo, llame a `.fit` utilizando la ubicación de Amazon S3 del conjunto de datos de entrenamiento.

```
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)
```

# Interfaz de entrada y salida para el algoritmo de clasificación de imágenes TensorFlow
<a name="IC-TF-inputoutput"></a>

Cada uno de los modelos previamente entrenados que aparecen en TensorFlow Hub Models se puede ajustar a cualquier conjunto de datos con cualquier número de clases de imágenes. Ten cuidado con el formato de los datos de entrenamiento para introducirlos en el modelo de clasificación de imágenes. TensorFlow 
+ **Formato de entrada de datos de entrenamiento:** los datos de entrenamiento deben ser un directorio con el mismo número de subdirectorios que el número de clases. Cada subdirectorio debe contener imágenes que pertenezcan a esa clase en formato .jpg, .jpeg o .png.

A continuación se muestra un ejemplo con una estructura de directorios de entrada. Este conjunto de datos de ejemplo tiene dos clases: `roses` y `dandelion`. Los archivos de imagen de cada carpeta de clases pueden tener cualquier nombre. El directorio de entrada debe alojarse en un bucket de Amazon S3 con una ruta similar a `s3://bucket_name/input_directory/`. Tenga en cuenta que es obligatorio incluir `/` al final.

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

Los modelos entrenados generan archivos de asignación de etiquetas que asignan los nombres de las carpetas de clases a los índices en la lista de probabilidades de las clases de salida. Esta asignación está en orden alfabético. Por ejemplo, en el caso anterior, la clase “diente de león” es de índice 0 y la clase “rosas” es de índice 1. 

Tras el entrenamiento, dispondrá de un modelo de ajuste fino que podrá seguir entrenando de forma incremental; también podrá implementarlo para hacer inferencias. El TensorFlow algoritmo de clasificación de imágenes añade automáticamente una firma de preprocesamiento y posprocesamiento al modelo ajustado para que pueda tomar imágenes como probabilidades de entrada y devolver clases de probabilidades. El archivo que asigna los índices de clases en las etiquetas de las clases se guarda junto con los modelos. 

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

Puedes iniciar el entrenamiento de un nuevo modelo con artefactos de un modelo que hayas entrenado previamente con IA. SageMaker El entrenamiento incremental supone un ahorro de tiempo cuando queremos entrenar un nuevo modelo con datos idénticos o similares.

**nota**  
Solo puedes combinar un modelo de clasificación de SageMaker imágenes con otro TensorFlow modelo de clasificación de imágenes entrenado en SageMaker IA. TensorFlow 

Para el entrenamiento incremental, puede utilizar cualquier conjunto de datos, siempre y cuando el conjunto de clases siga siendo el mismo. El paso de entrenamiento incremental es similar al paso de ajuste; la diferencia es que, en lugar de comenzar con un modelo previamente entrenado, se comienza con un modelo de ajuste fino existente. Para ver un ejemplo de entrenamiento gradual con el TensorFlow algoritmo de clasificación de imágenes mediante SageMaker IA, consulte el cuaderno de muestra [Introducción a SageMaker TensorFlow la clasificación de imágenes](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

## Inferencia con el algoritmo de clasificación de imágenes TensorFlow
<a name="IC-TF-inference"></a>

Puede alojar el modelo ajustado que resulta de su formación en clasificación de TensorFlow imágenes para realizar inferencias. Cualquier imagen de entrada para la inferencia debe estar en el formato `.jpg`, `jpeg` o `.png` y ser del tipo de contenido `application/x-image`. El TensorFlow algoritmo de clasificación de imágenes cambia el tamaño de las imágenes de entrada automáticamente. 

Al ejecutar la inferencia, se obtienen valores de probabilidad, etiquetas de clase para todas las clases y la etiqueta pronosticada correspondiente al índice de clase con la probabilidad más alta, codificada en formato JSON. El TensorFlow modelo de clasificación de imágenes procesa una sola imagen por solicitud y genera solo una línea. Lo siguiente es un ejemplo de una respuesta en formato 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` se establece en `application/json`, el modelo solo genera probabilidades. Para obtener más información sobre el entrenamiento y la inferencia con el TensorFlow algoritmo de clasificación de imágenes, consulte el cuaderno de muestra [Introducción a SageMaker TensorFlow la clasificación de imágenes](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

## Recomendación de instancia de Amazon EC2 para el algoritmo de clasificación de imágenes TensorFlow
<a name="IC-TF-instances"></a>

El TensorFlow algoritmo de clasificación de imágenes es compatible con todas las instancias de CPU y GPU para el entrenamiento, incluidas las siguientes:
+ `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`

Para el entrenamiento con lotes grandes, recomendamos utilizar instancias de GPU con más memoria. Para la inferencia, se pueden usar instancias de CPU (como M5) o de GPU (P2, P3, G4dn o G5).

## Clasificación de imágenes: TensorFlow ejemplos de cuadernos
<a name="IC-TF-sample-notebooks"></a>

Para obtener más información sobre cómo utilizar el TensorFlow algoritmo de clasificación de SageMaker imágenes para el aprendizaje por transferencia en un conjunto de datos personalizado, consulte la [introducción al SageMaker TensorFlow cuaderno de clasificación de imágenes](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/image_classification_tensorflow/Amazon_TensorFlow_Image_Classification.ipynb).

Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo en SageMaker IA, consulte. [Instancias de Amazon SageMaker Notebook](nbi.md) Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña **Ejemplos de SageMaker IA** para ver una lista de todos los ejemplos de SageMaker IA. Para abrir un cuaderno, elija su pestaña **Usar** y elija **Crear copia**.

# Cómo TensorFlow funciona la clasificación de imágenes
<a name="IC-TF-HowItWorks"></a>

El TensorFlow algoritmo de clasificación de imágenes toma una imagen como entrada y la clasifica en una de las etiquetas de clase de salida. Varias redes de aprendizaje profundo MobileNet, como Inception ResNet, EfficientNet son muy precisas para la clasificación de imágenes. También hay redes de aprendizaje profundo que se entrenan con conjuntos de datos de imágenes de gran tamaño, por ejemplo ImageNet, que tiene más de 11 millones de imágenes y casi 11 000 clases. Después de entrenar una red con ImageNet datos, puede ajustarla en un conjunto de datos con un enfoque particular para realizar tareas de clasificación más específicas. El TensorFlow algoritmo de clasificación de SageMaker imágenes de Amazon admite el aprendizaje por transferencia en muchos modelos previamente entrenados que están disponibles en el TensorFlow Hub.

Según el número de etiquetas de clase que figuren en tus datos de entrenamiento, se adjunta una capa de clasificación al modelo TensorFlow Hub previamente entrenado que elijas. La capa de clasificación está compuesta por una capa de eliminación, una capa densa y una capa totalmente conectada con regularización L2, y se inicia con ponderaciones aleatorias. El modelo tiene hiperparámetros para la tasa de eliminación, de la capa de eliminación, y el factor de regularización L2, para la capa densa. Luego, puede ajustar toda la red (lo que incluye el modelo prentrenado) o solo la capa de clasificación superior en los nuevos datos de entrenamiento. Con este método de aprendizaje por transferencia, es posible llevar a cabo el entrenamiento con conjuntos de datos más pequeños.

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

Los siguientes modelos previamente entrenados están disponibles para su uso en el aprendizaje por transferencia con el TensorFlow algoritmo de clasificación de imágenes. 

El tamaño, la cantidad de parámetros, el tiempo de entrenamiento y la latencia de inferencia de estos modelos puede variar considerablemente para un conjunto de datos determinado. El mejor modelo para su caso de uso dependerá de la complejidad del conjunto de datos de ajuste y de sus necesidades con respecto al tiempo de entrenamiento, la latencia de inferencia o la precisión del modelo.


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

# Clasificación de imágenes: TensorFlow hiperparámetros
<a name="IC-TF-Hyperparameter"></a>

Los hiperparámetros son parámetros que se establecen antes de que un modelo de machine learning comience a aprender. Los siguientes hiperparámetros son compatibles con el TensorFlow algoritmo de clasificación de imágenes integrado de Amazon SageMaker AI. Para obtener más información sobre el ajuste de hiperparámetros, consulte [Ajuste una clasificación de imágenes: modelo TensorFlow](IC-TF-tuning.md). 


| Nombre del parámetro | Description (Descripción) | 
| --- | --- | 
| augmentation |  Configure `"True"` para aplicar `augmentation_random_flip`, `augmentation_random_rotation` y `augmentation_random_zoom` en los datos de entrenamiento.  Valores válidos: cadena (`"True"` o `"False"`). Valor predeterminado: `"False"`.  | 
| augmentation\$1random\$1flip |  Indica qué modo de volteo se debe utilizar para el aumento de datos cuando `augmentation` está configurado en `"True"`. Para obtener más información, consulte [RandomFlip](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomFlip)la TensorFlow documentación. Valores válidos: cadena (`"horizontal_and_vertical"`, `"vertical"` o `"None"`). Valor predeterminado: `"horizontal_and_vertical"`.  | 
| augmentation\$1random\$1rotation |  Indica el grado de rotación que se debe utilizar para el aumento de datos cuando `augmentation` está establecido en `"True"`. Los valores representan una fracción de 2π. Los valores positivos giran en sentido contrario a las agujas del reloj, mientras que los valores negativos giran en sentido horario. `0` significa que no hay rotación. Para obtener más información, consulte [RandomRotation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomRotation)la TensorFlow documentación. Valores válidos: flotante, con el rango [`-1.0`, `1.0`]. Valor predeterminado: `0.2`.  | 
| augmentation\$1random\$1zoom |  Indica el grado de zoom vertical que se debe utilizar para el aumento de datos cuando `augmentation` está establecido en `"True"`. Los valores positivos se alejan, mientras que los valores negativos se acercan. `0` significa que no hay zoom. Para obtener más información, consulte [RandomZoom](https://www.tensorflow.org/api_docs/python/tf/keras/layers/RandomZoom)la TensorFlow documentación. Valores válidos: flotante, con el rango [`-1.0`, `1.0`]. Valor predeterminado: `0.1`.  | 
| batch\$1size |  El tamaño del lote para la capacitación. Para la formación sobre instancias con varias GPUs, este tamaño de lote se utiliza en todas las GPUs.  Valores válidos: número entero positivo. Valor predeterminado: `32`.  | 
| beta\$11 |  La versión beta1 del optimizador `"adam"`. Representa la tasa de degradación exponencial para las estimaciones del primer momento. No se tiene en cuenta para otros optimizadores. Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.9`.  | 
| beta\$12 |  La versión beta2 del optimizador `"adam"`. Representa la tasa de degradación exponencial para las estimaciones del segundo momento. No se tiene en cuenta para otros optimizadores. Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.999`.  | 
| binary\$1mode |  Cuando `binary_mode` se establece en `"True"`, el modelo devuelve un único número de probabilidad para la clase positiva y puede utilizar opciones `eval_metric` adicionales. Úselo solo para problemas de clasificación binaria. Valores válidos: cadena (`"True"` o `"False"`). Valor predeterminado: `"False"`.  | 
| dropout\$1rate | La tasa de eliminación en la capa de eliminación, dentro de la capa de clasificación superior. Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.2` | 
| early\$1stopping |  Se establece en `"True"` a fin de usar una lógica de detención temprana durante el entrenamiento. Si es `"False"`, no se utiliza la interrupción temprana. Valores válidos: cadena (`"True"` o `"False"`). Valor predeterminado: `"False"`.  | 
| early\$1stopping\$1min\$1delta | El cambio mínimo necesario para considerarse una mejora. Un cambio absoluto inferior al valor de early\$1stopping\$1min\$1delta no se considera mejora. Solo se usa cuando early\$1stopping está establecido en "True".Valores válidos: flotante, con el rango [`0.0`, `1.0`].Valor predeterminado: `0.0`. | 
| early\$1stopping\$1patience |  El número de epochs (fechas de inicio) para seguir entrenando sin que haya mejoras. Solo se usa cuando `early_stopping` está establecido en `"True"`. Valores válidos: número entero positivo. Valor predeterminado: `5`.  | 
| epochs |  El número de fechas de inicio de capacitación. Valores válidos: número entero positivo. Valor predeterminado: `3`.  | 
| epsilon |  El valor épsilon para los optimizadores `"adam"`, `"rmsprop"`, `"adadelta"` y `"adagrad"`. Se suele establecer en un valor pequeño para evitar la división por 0. No se tiene en cuenta para otros optimizadores. Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `1e-7`.  | 
| eval\$1metric |  Si `binary_mode` se establece en `"False"`, `eval_metric` solo puede ser `"accuracy"`. Si `binary_mode` es `"True"`, seleccione cualquiera de los valores válidos. Para obtener más información, consulta [las métricas](https://www.tensorflow.org/api_docs/python/tf/keras/metrics) en la TensorFlow documentación. Valores válidos: cadena (`"accuracy"`, `"precision"`, `"recall"`, `"auc"` o `"prc"`). Valor predeterminado: `"accuracy"`.  | 
| image\$1resize\$1interpolation |  Indica el método de interpolación utilizado al cambiar el tamaño de las imágenes. Para obtener más información, consulte [image.resize en la documentación](https://www.tensorflow.org/api_docs/python/tf/image/resize). TensorFlow  Valores válidos: cadena (`"bilinear"`, `"nearest"`, `"bicubic"`, `"area"`, ` "lanczos3"`, `"lanczos5"`, `"gaussian"` o `"mitchellcubic"`). Valor predeterminado: `"bilinear"`.  | 
| initial\$1accumulator\$1value |  El valor inicial de los acumuladores o los valores de impulso por parámetro del optimizador `"adagrad"`. No se tiene en cuenta para otros optimizadores. Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.0001`.  | 
| label\$1smoothing |  Indica en qué medida se debe relajar la confianza en los valores de las etiquetas. Por ejemplo, si `label_smoothing` es `0.1`, las etiquetas que no son de destino serán `0.1/num_classes ` y las etiquetas de destino serán `0.9+0.1/num_classes`.  Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.1`.  | 
| learning\$1rate | La tasa de aprendizaje del optimizador. Valores válidos: flotante, con el rango [`0.0`, `1.0`].Valor predeterminado: `0.001`. | 
| momentum |  El impulso para los optimizadores `"sgd"`, `"nesterov"` y `"rmsprop"`. No se tiene en cuenta para otros optimizadores. Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.9`.  | 
| optimizer |  El tipo de optimizador. Para obtener más información, consulte [Optimizadores](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers) en la documentación. TensorFlow  Valores válidos: cadena, (`"adam"`, `"sgd"`, `"nesterov"`, `"rmsprop"`, ` "adagrad"` o `"adadelta"`). Valor predeterminado: `"adam"`.  | 
| regularizers\$1l2 |  El factor de regularización L2 de la capa densa en la capa de clasificación.  Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `.0001`.  | 
| reinitialize\$1top\$1layer |  Si se establece en `"Auto"`, los parámetros de la capa de clasificación superior se reinicializan durante el ajuste. Para el entrenamiento incremental, los parámetros de la capa de clasificación superior no se reinicializan, a no ser que se establezca en `"True"`. Valores válidos: cadena, `"Auto"`, `"True"` o `"False"`. Valor predeterminado: `"Auto"`.  | 
| rho |  El factor de descuento para el gradiente de los optimizadores `"adadelta"` y `"rmsprop"`. No se tiene en cuenta para otros optimizadores.  Valores válidos: flotante, con el rango [`0.0`, `1.0`]. Valor predeterminado: `0.95`.  | 
| train\$1only\$1top\$1layer |  Si es `"True"`, solo se refinan los parámetros de la capa de clasificación superior. Si es `"False"`, todos los parámetros del modelo se refinan. Valores válidos: cadena (`"True"` o `"False"`). Valor predeterminado: `"False"`.  | 

# Ajuste una clasificación de imágenes: modelo TensorFlow
<a name="IC-TF-tuning"></a>

El *ajuste de modelo automático*, también conocido como ajuste de hiperparámetros, encuentra la mejor versión de un modelo ejecutando muchas tareas que probar una serie de hiperparámetros en su conjunto de datos. Usted elige los hiperparámetros que pueden ajustarse, un rango de valores para cada uno de ellos y una métrica objetiva. Puede elegir la métrica objetiva de las métricas que el algoritmo computa. El ajuste de modelo automático busca los hiperparámetros elegidos para encontrar la combinación de valores que obtienen el modelo que optimiza la métrica objetiva.

Para obtener más información acerca del ajuste de modelos, consulte [Ajuste automático de modelos con IA SageMaker](automatic-model-tuning.md).

## Métricas calculadas mediante el algoritmo de clasificación de imágenes TensorFlow
<a name="IC-TF-metrics"></a>

El algoritmo de clasificación de imágenes es un algoritmo supervisado. Informa una métrica de precisión que se calcula durante la capacitación. Al ajustar el modelo, elija esta métrica como la métrica objetivo.


| Nombre de métrica | Description (Descripción) | Dirección de optimización | 
| --- | --- | --- | 
| validation:accuracy | La ratio del número de predicciones correctas con respecto al número total de predicciones realizadas. | Maximizar | 

## Clasificación de imágenes ajustable: hiperparámetros TensorFlow
<a name="IC-TF-tunable-hyperparameters"></a>

Ajuste un modelo de clasificación de imágenes con los siguientes hiperparámetros. Estos son los hiperparámetros con mayor impacto en las métricas de objetivos de clasificación de imágenes: `batch_size`, `learning_rate` y `optimizer`. Ajuste los hiperparámetros relacionados con el optimizador, como `momentum`, `regularizers_l2`, `beta_1`, `beta_2` y `eps`, en función del `optimizer` seleccionado. Por ejemplo, utilice `beta_1` y `beta_2` solo cuando `adam` es el `optimizer`.

Para obtener más información sobre los hiperparámetros que se utilizan en cada `optimizer`, consulte [Clasificación de imágenes: TensorFlow hiperparámetros](IC-TF-Hyperparameter.md).


| Nombre del parámetro | Tipo de parámetro | Intervalos recomendados | 
| --- | --- | --- | 
| batch\$1size | IntegerParameterRanges | MinValue: 8, MaxValue: 512 | 
| beta\$11 | ContinuousParameterRanges | MinValue: 1e-6, 0,999 MaxValue | 
| beta\$12 | ContinuousParameterRanges | MinValue: 1e-6, 0,999 MaxValue | 
| eps | ContinuousParameterRanges | MinValue: 1e-8,: 1,0 MaxValue | 
| learning\$1rate | ContinuousParameterRanges | MinValue: 1e-6,: 0,5 MaxValue | 
| momentum | ContinuousParameterRanges | MinValue: 0,0, 0,999 MaxValue | 
| optimizer | CategoricalParameterRanges | ['sgd', ‘adam’, ‘rmsprop’, 'nesterov', 'adagrad', 'adadelta'] | 
| regularizers\$1l2 | ContinuousParameterRanges | MinValue: 0,0, MaxValue 0,999 | 
| train\$1only\$1top\$1layer | ContinuousParameterRanges | ['True', 'False'] | 