# Quiz de final de capítulo

A ver qué has aprendido en este capítulo:

### 1. El dataset `emotion` contiene mensajes de Twitter etiquetados con emociones. Búscalo en el [Hub](https://huggingface.co/datasets), y lee la tarjeta del dataset. ¿Cuál de estas no es una de sus emociones básicas?

### 2. Busca el dataset `ar_sarcasm` en el [Hub](https://huggingface.co/datasets). ¿Con qué tarea es compatible?

tarjeta del dataset.",
    },
    {
      text: "Reconocimiento de entidades nombradas",
      explain:
        "No es correcto, echa otro vistazo a la tarjeta del dataset.",
    },
    {
      text: "Responder preguntas",
      explain:
        "No es correcto, echa otro vistazo a la tarjeta del dataset.",
    },
  ]}
/>

### 3. ¿Cómo se procesan un par de frases según el modelo BERT?

[SEP] para separar las dos frases, ¡pero falta algo más!",
    },
    {
      text: "[CLS] tokens_frase_1 tokens_frase_2",
      explain:
        "Se necesita un token especial [CLS] al principio, ¡pero falta algo más!",
    },
    {
      text: "[CLS] tokens_frase_1 [SEP] tokens_frase_2 [SEP]",
      explain: "¡Correcto!",
      correct: true,
    },
    {
      text: "[CLS] tokens_frase_1 [SEP] tokens_frase_2",
      explain:
        "Se necesita un token especial [CLS] al principio y un token especial [SEP] para separar las dos frases, ¡pero falta algo más!",
    },
  ]}
/>

{#if fw === 'pt'}

### 4. ¿Cuáles son las ventajas del método `Dataset.map()`?

### 5. ¿Qué significa padding dinámico?

### 6. ¿Cuál es el objetivo de la función "collate"?

DataCollatorWithPadding en especial.',
    },
    {
      text: "Combina todas las muestras del conjunto de datos en un lote.",
      explain:
        '¡Correcto! Puedes pasar una función "collate" como argumento a un DataLoader. Nosotros usamos la función DataCollatorWithPadding, que rellena todos los elementos de un lote para que tengan la misma longitud.',
      correct: true,
    },
    {
      text: "Preprocesa todo el conjunto de datos.",
      explain:
        'Eso sería una función de preprocesamiento, no una función "collate".',
    },
    {
      text: "Trunca las secuencias del conjunto de datos.",
      explain:
        'Una función "collate" está relacionada con el procesamiento de lotes individuales, no del conjunto de datos completo. Si quieres truncar, puedes utilizar el argumento truncate del tokenizer.',
    },
  ]}
/>

### 7. ¿Qué ocurre cuando instancias una de las clases `AutoModelForXxx` con un modelo del lenguaje preentrenado (como `bert-base-uncased`) que corresponde a una tarea distinta de aquella para la que fue entrenado?

AutoModelForSequenceClassification con bert-base-uncased, recibimos una advertencia al instanciar el modelo. La cabeza preentrenada no se puede utilizar para la tarea de clasificación de secuencias, por lo que es eliminada y se instancia una nueva cabeza con pesos aleatorios.",
      correct: true,
    },
    {
      text: "La cabeza del modelo preentrenado es eliminada.",
      explain: "Se necesita hacer algo más, inténtalo de nuevo.",
    },
    {
      text: "Nada, ya que el modelo se puede seguir ajustando para la otra tarea.",
      explain:
        "La cabeza del modelo preentrenado no fue entrenada para resolver esta tarea, ¡así que deberíamos eliminarla!",
    },
  ]}
/>

### 8. ¿Para qué sirve `TrainingArguments`?

Trainer.",
      explain: "¡Correcto!",
      correct: true,
    },
    {
      text: "Especifica el tamaño del modelo.",
      explain:
        "El tamaño del modelo viene definido por la configuración del modelo, no por la clase TrainingArguments.",
    },
    {
      text: "Solo contiene los hiperparámetros utilizados para la evaluación.",
      explain:
        "En el ejemplo especificamos dónde se guardarán el modelo y sus checkpoints. ¡Inténtalo de nuevo!",
    },
    {
      text: "Solo contiene los hiperparámetros utilizados para el entrenamiento.",
      explain:
        "En el ejemplo también utilizamos evaluation_strategy, que afecta a la evaluación. ¡Inténtalo de nuevo!",
    },
  ]}
/>

### 9. ¿Por qué deberías utilizar la librería 🤗 Accelerate?

Trainer, no con la librería 🤗 Accelerate. ¡Vuelve a intentarlo!",
    },
    {
      text: "Hace que nuestros bucles de entrenamiento funcionen con estrategias distribuidas.",
      explain:
        "¡Correcto! Con 🤗 Accelerate, tus bucles de entrenamiento funcionarán para múltiples GPUs y TPUs.",
      correct: true,
    },
    {
      text: "Ofrece más funciones de optimización.",
      explain:
        "No, la librería 🤗 Accelerate no proporciona ninguna función de optimización.",
    },
  ]}
/>

{:else}

### 4. ¿Qué ocurre cuando instancias una de las clases `TFAutoModelForXxx` con un modelo del lenguaje preentrenado (como `bert-base-uncased`) que corresponde a una tarea distinta de aquella para la que fue entrenado?

TFAutoModelForSequenceClassification con bert-base-uncased, recibimos una advertencia al instanciar el modelo. La cabeza preentrenada no se puede utilizar para la tarea de clasificación de secuencias, por lo que es eliminada y se instancia una nueva cabeza con pesos aleatorios.",
      correct: true,
    },
    {
      text: "La cabeza del modelo preentrenado es eliminada",
      explain: "Se necesita hacer algo más, inténtalo de nuevo.",
    },
    {
      text: "Nada, ya que el modelo se puede seguir ajustando para la otra tarea.",
      explain:
        "La cabeza del modelo preentrenado no fue entrenada para resolver esta tarea, ¡así que deberíamos eliminarla!",
    },
  ]}
/>

### 5. Los modelos TensorFlow de `transformers` ya son modelos Keras. ¿Qué ventajas ofrece esto?

TPUStrategy, incluyendo la inicialización del modelo.",
    },
    {
      text: "Puede aprovechar los métodos existentes, como compile(), fit() y predict().",
      explain:
        "¡Correcto! Una vez que tienes los datos, entrenar el modelo requiere muy poco esfuerzo.",
      correct: true,
    },
    {
      text: "Tienes la oportunidad de aprender Keras a la vez que transformadores.",
      explain: "Correcto, pero estamos buscando otra respuesta :)",
      correct: true,
    },
    {
      text: "Puede calcular fácilmente las métricas relacionadas con el dataset.",
      explain:
        "Keras nos ayuda con el entrenamiento y la evaluación del modelo, no con el cálculo de métricas relacionadas con el dataset.",
    },
  ]}
/>

### 6. ¿Cómo puedes definir tu propia métrica personalizada?

tf.keras.metrics.Metric.",
      explain: "¡Genial!",
      correct: true,
    },
    {
      text: "Utilizando la API funcional de Keras.",
      explain: "¡Inténtalo de nuevo!",
    },
    {
      text: "Utilizando una función cuya firma sea metric_fn(y_true, y_pred).",
      explain: "¡Correcto!",
      correct: true,
    },
    {
      text: "Buscándolo en Google.",
      explain:
        "Esta no es la respuesta que estamos buscando, pero te podría ayudar a encontrarla.",
      correct: true,
    },
  ]}
/>

{/if}

