

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.

# Sequence-to-Sequence Algoritmo
<a name="seq-2-seq"></a>

Amazon SageMaker AI Sequence to Sequence es un algoritmo de aprendizaje supervisado en el que la entrada es una secuencia de fichas (por ejemplo, texto o audio) y la salida generada es otra secuencia de fichas. Los ejemplos de aplicaciones incluyen: traducción automática (introducir una oración de un idioma y predecir cómo sería esa oración en otro idioma), resumen de texto (introducir una cadena de palabras más larga y predecir una cadena de palabras más corta que sea un resumen), speech-to-text (clips de audio convertidos en oraciones de salida en fichas). Recientemente, se han diseñado correctamente problemas en este dominio con redes neuronales profundas que muestran un importante aumento del rendimiento a través de las metodologías anteriores. Amazon SageMaker AI seq2seq utiliza modelos de redes neuronales recurrentes (RNNs) y redes neuronales convolucionales (CNN) con atención como arquitecturas de codificador-decodificador. 

**Topics**
+ [Interfaz Sequence-to-Sequence de entrada/salida para el algoritmo](#s2s-inputoutput)
+ [Recomendación de instancia EC2 Sequence-to-Sequence para el algoritmo](#s2s-instances)
+ [Sequence-to-Sequence Cuadernos de muestra](#seq-2-seq-sample-notebooks)
+ [Cómo funciona Sequence-to-Sequence](seq-2-seq-howitworks.md)
+ [Sequence-to-Sequence Hiperparámetros](seq-2-seq-hyperparameters.md)
+ [Ajuste un Sequence-to-Sequence modelo](seq-2-seq-tuning.md)

## Interfaz Sequence-to-Sequence de entrada/salida para el algoritmo
<a name="s2s-inputoutput"></a>

**Entrenamiento**

SageMaker AI seq2seq espera datos en formato Recordio-ProtoBUF. Sin embargo, los tokens se esperan como enteros, no como puntos flotantes, como suele ser el caso.

Se incluye un script para convertir datos desde archivos de texto tokenizados al formato protobuf en [el bloc de notas de muestra de seq2seq](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html). Por lo general, empaqueta los datos en tensores de números enteros de 32 bits y genera los archivos de vocabulario necesarios que se precisan para la inferencia y el cálculo de métricas.

Una vez realizado el procesamiento previo, se puede invocar el algoritmo para la capacitación. El algoritmo espera tres canales:
+ `train`: debe contener los datos de capacitación (por ejemplo, el archivo `train.rec` generado por el script de preprocesamiento).
+ `validation`: debe contener los datos de validación (por ejemplo, el archivo `val.rec` generado por el script de preprocesamiento).
+ `vocab`: debe contener dos archivos de vocabulario (`vocab.src.json` y `vocab.trg.json`). 

Si el algoritmo no encuentra datos en alguno de estos tres canales, se producirá un error en los resultados de capacitación.

**Inferencia**

Para los puntos de enlace alojados, la inferencia admite dos formatos de datos. Para realizar la inferencia mediante tokens de texto separados por espacios, utilice el formato `application/json`. De lo contrario, utilice el formato `recordio-protobuf` para trabajar con los datos codificados de números enteros. Ambos modos admiten la creación de lotes de datos de entrada. El formato `application/json` también le permite visualizar la matriz de atención.
+ `application/json`: espera la entrada en formato JSON y devuelve la salida en formato JSON. Ambos tipos de aceptación y contenido deben ser `application/json`. Se espera que las secuencias sean una cadena con tokens separados por espacios en blanco. Se recomienda este formato cuando el número de secuencias de origen en el lote es pequeño. También admite las siguientes opciones de configuración adicionales:

  `configuration`: \$1`attention_matrix`: `true`\$1: devuelve la matriz de atención para una secuencia de entrada determinada.
+ `application/x-recordio-protobuf`: espera la entrada en formato `recordio-protobuf` y devuelve la salida en `recordio-protobuf format`. Ambos tipos de aceptación y contenido deben ser `applications/x-recordio-protobuf`. Para este formato, las secuencias de origen deben convertirse en una lista de números enteros para la codificación protobuf posterior. Este formato es el recomendado para la inferencia masiva.

Para la transformación por lotes, la interfaz admite el formato de líneas JSON. La transformación por lotes espera la entrada en formato de líneas JSON y devuelve la salida en formato de líneas JSON. Ambos tipos de aceptación y contenido deben ser `application/jsonlines`. El formato para la entrada es el siguiente:

```
content-type: application/jsonlines

{"source": "source_sequence_0"}
{"source": "source_sequence_1"}
```

El formato para la respuesta es el siguiente:

```
accept: application/jsonlines

{"target": "predicted_sequence_0"}
{"target": "predicted_sequence_1"}
```

Para obtener detalles adicionales sobre cómo serializar y deserializar las entradas y salidas en formatos específicos para la referencia, consulte [Sequence-to-Sequence Cuadernos de muestra](#seq-2-seq-sample-notebooks).

## Recomendación de instancia EC2 Sequence-to-Sequence para el algoritmo
<a name="s2s-instances"></a>

El algoritmo seq2seq de Amazon SageMaker AI solo es compatible con los tipos de instancias de GPU y solo se puede entrenar en una sola máquina. Sin embargo, puede usar instancias con varias. GPUs El algoritmo seq2seq es compatible con las familias de instancias de GPU P2, P3, G4dn y G5.

## Sequence-to-Sequence Cuadernos de muestra
<a name="seq-2-seq-sample-notebooks"></a>

Para ver un ejemplo de cuaderno que muestra cómo usar el algoritmo SageMaker AI Sequence to Sequence para entrenar un modelo de traducción inglés-alemán, consulte [Ejemplo de traducción automática inglés-alemán con SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/seq2seq_translation_en-de/SageMaker-Seq2Seq-Translation-English-German.html) AI Seq2Seq. Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo en IA, consulte. SageMaker [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. Los blocs de notas de modelado de ejemplos que utilizan los algoritmos NTM se encuentran en la sección de **introducción a algoritmos de Amazon**. Para abrir un cuaderno, haga clic en la pestaña **Usar** y seleccione **Crear copia**.

# Cómo funciona Sequence-to-Sequence
<a name="seq-2-seq-howitworks"></a>

Por lo general, una red neuronal para el sequence-to-sequence modelado consta de varias capas, que incluyen: 
+ Una **capa de integración**. En esta capa, la matriz de entrada, que son tokens de entrada codificados de forma dispersa (por ejemplo, con codificación en caliente) se mapean en una capa de características densa. Esto es necesario porque un vector de características de alta dimensión es más capaz de codificar la información relativa a un elemento concreto (palabra que significa corpus de texto) que un vector simple one-hot-encoded. También es una práctica habitual inicializar esta capa de incrustación con un vector de palabras previamente entrenado, como [Glove](https://nlp.stanford.edu/projects/glove/), [FastText](https://fasttext.cc/)o inicializarlo aleatoriamente y aprender los parámetros durante el entrenamiento. 
+ Una **capa del codificador**. Después de que los tokens de entrada se mapeen en un espacio de características de grandes dimensiones, la secuencia pasa por una capa del codificador para comprimir toda la información desde la capa de integración de entrada (o toda la secuencia) en un vector de características de longitud fija. Normalmente, un codificador se compone de redes de tipo RNN como de memoria a corto y largo plazo (LSTM) o unidades recurrentes cerradas (GRU). (el [blog de Colah](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) explica la LSTM con más detalles). 
+ Una **capa de decodificador**. La capa de decodificador toma este vector de características codificado y produce la secuencia de salida de tokens. Esta capa también se crea normalmente con arquitecturas RNN (LSTM y GRU). 

Se realiza la capacitación de todo el modelo conjuntamente para maximizar la probabilidad de la secuencia de destino una vez proporcionada la secuencia de origen. Sutskever et al. introdujo [este modelo por primera vez](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf) en 2014. 

**Mecanismo de atención**. La desventaja de un marco de trabajo de codificador-decodificador es que el desempeño del modelo desciende a medida que la longitud de la secuencia de origen aumenta debido al límite de cantidad de información que puede contener el vector de características cifrado de longitud fija. Para resolver este problema, en 2015, Bahdanau et al. propuso el [mecanismo de atención](https://arxiv.org/pdf/1409.0473.pdf). En un mecanismo de atención, el decodificador intenta buscar la ubicación de la secuencia del codificador en la que podría ubicarse la información más importante y utiliza esa información y las palabras decodificadas anteriormente para predecir el siguiente token en la secuencia. 

Para obtener más detalles, consulte el documento técnico de [enfoques eficaces de traducción automática neuronal basada en atención](https://arxiv.org/abs/1508.04025) de Luong, et al. que explica y simplifica los cálculos para diversos mecanismos de atención. Además, el documento técnico de [sistema de traducción automática neuronal de Google: reducir la brecha entre la traducción humana y automática](https://arxiv.org/abs/1609.08144) de Wu, et al. describe la arquitectura de Google para la traducción automática, que usa conexiones de omisión entre las capas de codificador y decodificador.

# Sequence-to-Sequence Hiperparámetros
<a name="seq-2-seq-hyperparameters"></a>

En la siguiente tabla se enumeran los hiperparámetros que puede configurar al entrenar con el algoritmo Amazon SageMaker AI Sequence-to-Sequence (seq2seq).


| Nombre del parámetro | Description (Descripción) | 
| --- | --- | 
| batch\$1size | Tamaño del minilote para el gradiente descendiente. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 64 | 
| beam\$1size | Longitud del haz para la búsqueda de haces. Se utiliza durante la capacitación de la computación `bleu` y se utiliza durante la inferencia. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 5 | 
| bleu\$1sample\$1size | Número de instancias que elegir desde el conjunto de datos de validación para decodificar y calcular la puntuación `bleu` durante la capacitación. Establézcala en -1 para utilizar el conjunto de validación completo (si se elige `bleu` como `optimized_metric`). **Opcional** Valores válidos: número entero Valor predeterminado: 0 | 
| bucket\$1width | Devuelve buckets (origen, destino) hasta (`max_seq_len_source`, `max_seq_len_target`). El lado más largo de los datos usa pasos de, `bucket_width` mientras que el lado más corto usa pasos reducidos según la relación de longitud promedio. target/source Si uno de los lados alcanza la longitud máxima antes que el otro, el ancho de los buckets adicionales de ese lado se fija a ese lado de `max_len`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 10 | 
| bucketing\$1enabled | Establézcalo en `false` para deshabilitar la creación de buckets y expandirlos con la longitud máxima. **Opcional** Valores válidos: `true` o `false` Valor predeterminado: `true` | 
| checkpoint\$1frequency\$1num\$1batches | Punto de comprobación y evaluación cada x lotes. Este hiperparámetro de puntos de control se pasa al algoritmo seq2seq de la SageMaker IA para detenerlo anticipadamente y recuperar el mejor modelo. Los puntos de control del algoritmo se ejecutan localmente en el contenedor de entrenamiento del algoritmo y no son compatibles con los puntos de control de la IA. SageMaker El algoritmo guarda temporalmente los puntos de control en una ruta local y guarda el mejor artefacto del modelo en la ruta de salida del modelo en S3 una vez finalizado el trabajo de entrenamiento. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 1000 | 
| checkpoint\$1threshold | Se permite que el número máximo de modelo de puntos de comprobación no mejore en `optimized_metric` en el conjunto de datos de validación antes de que se detenga la capacitación. Este hiperparámetro de puntos de control se transfiere al algoritmo seq2seq de la SageMaker IA para detenerlo anticipadamente y recuperar el mejor modelo. Los puntos de control del algoritmo se ejecutan localmente en el contenedor de entrenamiento del algoritmo y no son compatibles con los puntos de control de la IA. SageMaker El algoritmo guarda temporalmente los puntos de control en una ruta local y guarda el mejor artefacto del modelo en la ruta de salida del modelo en S3 una vez finalizado el trabajo de entrenamiento. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 3 | 
| clip\$1gradient | Los valores de gradiente absolutos de clips son superiores a este. Establézcalo en negativo para deshabilitar. **Opcional** Valores válidos: número flotante Valor predeterminado: 1 | 
| cnn\$1activation\$1type | El tipo de activación `cnn` que se va a utilizar. **Opcional** Valores válidos: Cadena. Puede ser uno de los siguientes: `glu`, `relu`, `softrelu`, `sigmoid` o bien `tanh`. Valor predeterminado: `glu` | 
| cnn\$1hidden\$1dropout | Probabilidad de abandono para al abandono entre capas convolucionales. **Opcional** Valores válidos: número flotante. Rango en [0,1]. Valor predeterminado: 0 | 
| cnn\$1kernel\$1width\$1decoder | Ancho de kernel para el decodificador `cnn`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 5 | 
| cnn\$1kernel\$1width\$1encoder | Ancho de kernel para el codificador `cnn`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 3 | 
| cnn\$1num\$1hidden | Número de unidades ocultas `cnn` para el codificador y decodificador. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 512 | 
| decoder\$1type | Tipo de decodificador. **Opcional** Valores válidos: Cadena. `rnn` o `cnn`. Valor predeterminado: *rnn* | 
| embed\$1dropout\$1source | Probabilidad de abandono para las incrustaciones del lado del origen. **Opcional** Valores válidos: número flotante. Rango en [0,1]. Valor predeterminado: 0 | 
| embed\$1dropout\$1target | Probabilidad de abandono para las incrustaciones del lado del destino. **Opcional** Valores válidos: número flotante. Rango en [0,1]. Valor predeterminado: 0 | 
| encoder\$1type | Tipo de codificador. La arquitectura `rnn` se basa en el mecanismo de atención de Bahdanau et al. y la arquitectura *cnn* se basa en Gehring et al. **Opcional** Valores válidos: Cadena. `rnn` o `cnn`. Valor predeterminado: `rnn` | 
| fixed\$1rate\$1lr\$1half\$1life | Vida media de la tasa de aprendizaje en términos de número de puntos de comprobación para programadores `fixed_rate_`\$1. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 10 | 
| learning\$1rate | Tasa de aprendizaje inicial. **Opcional** Valores válidos: número flotante Valor predeterminado: 0.0003 | 
| loss\$1type | Función de pérdida para la capacitación. **Opcional** Valores válidos: Cadena. `cross-entropy` Valor predeterminado: `cross-entropy` | 
| lr\$1scheduler\$1type | El tipo de programador de la tasa de aprendizaje. `plateau_reduce` conlleva la reducción de la tasa de aprendizaje cuando `optimized_metric` está con `validation_accuracy` detenido. `inv_t` es la decadencia de tiempo inversa. `learning_rate`/(1\$1`decay_rate`\$1t) **Opcional** Valores válidos: Cadena. Uno de los valores de entre `plateau_reduce`, `fixed_rate_inv_t` o `fixed_rate_inv_sqrt_t`. Valor predeterminado: `plateau_reduce` | 
| max\$1num\$1batches | Número máximo de por updates/batches procesar. -1 para infinito. **Opcional** Valores válidos: número entero Valor predeterminado: -1 | 
| max\$1num\$1epochs | Número máximo de fechas de inicio por los que pasan los datos de capacitación antes de que se detenga la adaptación. La capacitación continúa hasta este número de fechas de inicio incluso si la precisión de la validación no mejora si se aprueba el parámetro. Se ignora si no se aprueba. **Opcional** Valores válidos: entero positivo y menor o igual que max\$1num\$1epochs. Valor predeterminado: ninguno | 
| max\$1seq\$1len\$1source | La longitud máxima para la longitud de secuencia de origen. Las secuencias que superen esta longitud se truncarán con esa longitud. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 100  | 
| max\$1seq\$1len\$1target | La longitud máxima para la longitud de secuencia de destino. Las secuencias que superen esta longitud se truncarán con esa longitud. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 100 | 
| min\$1num\$1epochs | Número mínimo de fechas de inicio que la capacitación debe ejecutar antes de que se detenga a través de las condiciones `early_stopping`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 0 | 
| momentum | Constante de momento utilizada para `sgd`. No apruebe este parámetro si está usando `adam` o `rmsprop`. **Opcional** Valores válidos: número flotante Valor predeterminado: ninguno | 
| num\$1embed\$1source | Tamaño de integración para tokens de origen. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 512 | 
| num\$1embed\$1target | Tamaño de integración para tokens de destino. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 512 | 
| num\$1layers\$1decoder | Número de capas para el decodificador *rnn* o *cnn*. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 1 | 
| num\$1layers\$1encoder | Número de capas para el codificador `rnn` o `cnn`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 1 | 
| optimized\$1metric | Métricas que optimizar con una detención temprana. **Opcional** Valores válidos: Cadena. Uno de los valores de entre `perplexity`, `accuracy` o `bleu`. Valor predeterminado: `perplexity` | 
| optimizer\$1type | Optimizador de entre el que elegir. **Opcional** Valores válidos: Cadena. Uno de los valores de entre `adam`, `sgd` o `rmsprop`. Valor predeterminado: `adam` | 
| plateau\$1reduce\$1lr\$1factor | Factor con el que multiplicar la tasa de aprendizaje (para `plateau_reduce`). **Opcional** Valores válidos: número flotante Valor predeterminado: 0,5 | 
| plateau\$1reduce\$1lr\$1threshold | Para el programador `plateau_reduce`, multiplique la tasa de aprendizaje por el factor de reducción si `optimized_metric` no mejoró para estos puntos de comprobación distintos. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 3 | 
| rnn\$1attention\$1in\$1upper\$1layers | Propague la atención a las capas superiores de *rnn*, como en el documento de Google NMT. Solo es aplicable si se utiliza más de una capa. **Opcional** Valores válidos: booleano (`true` o `false`) Valor predeterminado: `true` | 
| rnn\$1attention\$1num\$1hidden | El valor predeterminado del número de unidades ocultas para capas de atención es `rnn_num_hidden`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: `rnn_num_hidden` | 
| rnn\$1attention\$1type | Modelo de atención para codificadores. `mlp` hace referencia a concat y bilineal hace referencia a general en el documento Luong et al. **Opcional** Valores válidos: Cadena. Puede ser uno de los siguientes: `dot`, `fixed`, `mlp` o bien `bilinear`. Valor predeterminado: `mlp` | 
| rnn\$1cell\$1type | Tipo específico de arquitectura `rnn`. **Opcional** Valores válidos: Cadena. `lstm` o `gru`. Valor predeterminado: `lstm` | 
| rnn\$1decoder\$1state\$1init | Cómo inicializar estados del decodificador `rnn` a partir de codificadores. **Opcional** Valores válidos: Cadena. Uno de los valores de entre `last`, `avg` o `zero`. Valor predeterminado: `last` | 
| rnn\$1first\$1residual\$1layer | La primera capa *rnn* que tiene una conexión residual, solo aplicable si el número de capas del codificador o decodificador es superior a 1. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 2 | 
| rnn\$1num\$1hidden | El número de unidades ocultas *rnn* para el codificador y el decodificador. Debe ser múltiplo de 2 porque el algoritmo utiliza la memoria a corto y largo plazo (LSTM) bidireccional de forma predeterminada. **Opcional** Valores válidos: número par entero positivo Valor predeterminado: 1024 | 
| rnn\$1residual\$1connections | Agregue la conexión residual al *rnn* apilado. El número de capas debe ser superior a 1. **Opcional** Valores válidos: booleano (`true` o `false`) Valor predeterminado: `false` | 
| rnn\$1decoder\$1hidden\$1dropout | La probabilidad de abandono para el estado oculto que combina el contexto con el estado oculto *rnn* en el decodificador. **Opcional** Valores válidos: número flotante. Rango en [0,1]. Valor predeterminado: 0 | 
| training\$1metric | Las métricas para realizar un seguimiento de la capacitación en los datos de validación. **Opcional** Valores válidos: Cadena. `perplexity` o `accuracy`. Valor predeterminado: `perplexity` | 
| weight\$1decay | Constante de decadencia de ponderación. **Opcional** Valores válidos: número flotante Valor predeterminado: 0 | 
| weight\$1init\$1scale | Escala de la inicialización de la ponderación (para la inicialización `uniform` y `xavier`).  **Opcional** Valores válidos: número flotante Valor predeterminado: 2.34 | 
| weight\$1init\$1type | Tipo de inicialización de la ponderación.  **Opcional** Valores válidos: Cadena. `uniform` o `xavier`. Valor predeterminado: `xavier` | 
| xavier\$1factor\$1type | Tipo de factor de xavier. **Opcional** Valores válidos: Cadena. Uno de los valores de entre `in`, `out` o `avg`. Valor predeterminado: `in` | 

# Ajuste un Sequence-to-Sequence modelo
<a name="seq-2-seq-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 por el Sequence-to-Sequence algoritmo
<a name="seq-2-seq-metrics"></a>

El algoritmo de secuencia a secuencia informa sobre tres métricas que se calculan durante la capacitación. Elija una de ellas como objetivo para optimizar al ajustar los valores de hiperparámetro.


| Nombre de métrica | Description (Descripción) | Dirección de optimización | 
| --- | --- | --- | 
| validation:accuracy |  Precisión calculada en el conjunto de datos de validación.  |  Maximizar  | 
| validation:bleu |  Puntuación [bleu﻿](https://en.wikipedia.org/wiki/BLEU) calculada en el conjunto de datos de validación. Como la computación BLEU es cara, puede elegir computar BLEU en una submuestra aleatoria del conjunto de datos de validación para acelerar el proceso de capacitación general. Use el parámetro `bleu_sample_size` para especificar la submuestra.  |  Maximizar  | 
| validation:perplexity |  [Perplejidad](https://en.wikipedia.org/wiki/Perplexity), es una función de pérdida computada en el conjunto de datos de validación. La perplejidad mide la entropía cruzada entre una muestra empírica y la distribución prevista por un modelo y de esta forma proporciona una medida de lo bien que un modelo predice los valores de muestra. Los modelos que son buenos prediciendo una muestra tienen una perplejidad baja.  |  Minimizar  | 

## Hiperparámetros ajustables Sequence-to-Sequence
<a name="seq-2-seq-tunable-hyperparameters"></a>

Puede ajustar los siguientes hiperparámetros para el algoritmo SageMaker AI Sequence to Sequence. Los hiperparámetros que mayor impacto tienen en las métricas objetivas de secuencia a secuencia: `batch_size`, `optimizer_type`, `learning_rate`, `num_layers_encoder` y `num_layers_decoder`.


| Nombre del parámetro | Tipo de parámetro | Intervalos recomendados | 
| --- | --- | --- | 
| num\$1layers\$1encoder |  IntegerParameterRange  |  [1-10]  | 
| num\$1layers\$1decoder |  IntegerParameterRange  |  [1-10]  | 
| batch\$1size |  CategoricalParameterRange  |  [16,32,64,128,256,512,1024,2048]  | 
| optimizer\$1type |  CategoricalParameterRange  |  ['adam', 'sgd', 'rmsprop']  | 
| weight\$1init\$1type |  CategoricalParameterRange  |  ['xavier', 'uniform']  | 
| weight\$1init\$1scale |  ContinuousParameterRange  |  Para el tipo xavier, escriba MinValue: 2.0, MaxValue: 3.0 Para el tipo uniforme: MinValue: -1.0, MaxValue: 1.0  | 
| learning\$1rate |  ContinuousParameterRange  |  MinValue: 0,00005, 0,2 MaxValue  | 
| weight\$1decay |  ContinuousParameterRange  |  MinValue: 0,0, 0,1 MaxValue  | 
| momentum |  ContinuousParameterRange  |  MinValue: 0,5, MaxValue 0,9  | 
| clip\$1gradient |  ContinuousParameterRange  |  MinValue: 1,0, MaxValue 5,0  | 
| rnn\$1num\$1hidden |  CategoricalParameterRange  |  Aplicable solo a redes neuronales recurrentes (RNNs). [128,256,512,1024,2048]   | 
| cnn\$1num\$1hidden |  CategoricalParameterRange  |  Aplicable solo a redes neuronales convolucionales ()CNNs. [128,256,512,1024,2048]   | 
| num\$1embed\$1source |  IntegerParameterRange  |  [256-512]  | 
| num\$1embed\$1target |  IntegerParameterRange  |  [256-512]  | 
| embed\$1dropout\$1source |  ContinuousParameterRange  |  MinValue: 0.0, MaxValue: 0.5  | 
| embed\$1dropout\$1target |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue 0,5  | 
| rnn\$1decoder\$1hidden\$1dropout |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue 0,5  | 
| cnn\$1hidden\$1dropout |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue 0,5  | 
| lr\$1scheduler\$1type |  CategoricalParameterRange  |  ['plateau\$1reduce', 'fixed\$1rate\$1inv\$1t', 'fixed\$1rate\$1inv\$1sqrt\$1t']  | 
| plateau\$1reduce\$1lr\$1factor |  ContinuousParameterRange  |  MinValue: 0,1, MaxValue 0,5  | 
| plateau\$1reduce\$1lr\$1threshold |  IntegerParameterRange  |  [1-5]  | 
| fixed\$1rate\$1lr\$1half\$1life |  IntegerParameterRange  |  [10-30]  | 