# Quiz am Ende des Kapitels

Teste, was du in diesem Kapitel gelernt hast!

### 1. Der Datensatz `emotion` enthält Twitter-Nachrichten, die mit Emotionen gelabelt sind. Suche im [Hub](https://huggingface.co/datasets) nach dem Datensatz und lies die Datensatzkarte. Welche der folgenden Emotionen gehört nicht zu den grundlegenden Emotionen?

### 2. Suche im [Hub](https://huggingface.co/datasets) nach dem Datensatz `ar_sarcasm`. Welche Aufgabe unterstützt er?

Datensatzkarte an!"
		},
		{
			text: "Named entity recognition (Eigennamenerkennung )",
			explain: "Das war's noch nicht - schau dir noch mal die Datensatzkarte an!"
		},
        {
			text: "Question answering (Fragenbeantwortung)",
			explain: "Leider wurde diese Frage nicht richtig beantwortet. Versuche es noch einmal!"
		}
	]}
/>

### 3. Wie erwartet das BERT Modell, dass ein Satzpaar verarbeitet wird?

[SEP] spezielles Token wird benötigt, um die beiden Sätze zu trennen, aber das ist nicht das Einzige!"
		},
		{
			text: "[CLS] Satztoken_1 Satztoken_2",
			explain: "Ein [CLS] spezielles Token ist am Anfang erforderlich, aber das ist nicht das Einzige!"
		},
		{
			text: "[CLS] Satztoken_1 [SEP] Satztoken_2 [SEP]",
			explain: "Das ist richtig!",
            correct: true
		},
        {
			text: "[CLS] Satztoken_1 [SEP] Satztoken_2",
			explain: "Ein [CLS] spezielles Token wird am Anfang benötigt, sowie ein [SEP] spezielles Token, um die beiden Sätze zu trennen, aber das ist noch nicht alles!"
		}
	]}
/>

{#if fw === 'pt'}
### 4. Was sind die Vorteile der Methode `Dataset.map()`?

### 5. Was bedeutet dynamisches Padding?

### 6. Welchen Zweck hat die Funktion collate?

DataCollatorWithPadding im Speziellen."
		},
		{
			text: "Er stellt alle Proben in einem Batch zusammen.",
			explain: "Richtig! Du kannst die collate Funktion als Argument eines DataLoaders übergeben. Wir haben die Funktion DataCollatorWithPadding verwendet, die alle Elemente in einem Batch auffüllt, damit sie die gleiche Länge haben.",
            correct: true
		},
		{
			text: "Es wird der gesamte Datensatz vorverarbeitet.",
			explain: "Das wäre eine Vorverarbeitungsfunktion, keine Zusammenfassungsfunktion wie collate."
		},
        {
			text: "Sie schneidet die Sequenzen im Datensatz ab.",
			explain: "Eine collate Funktion behandelt einzelne Batches, nicht den gesamten Datensatz. Wenn du am Abschneiden interessiert bist, kannst du das truncate Argument von dem tokenizer verwenden."
		}
	]}
/>

### 7. Was passiert, wenn du eine der Klassen `AutoModelForXxx` mit einem vortrainierten Sprachmodell (z. B. `bert-base-uncased`) instanziierst, das einer anderen Aufgabe entspricht als der, für die es trainiert wurde?

AutoModelForSequenceClassification mit bert-base-uncased verwendet haben, bekamen wir beim Instanziieren des Modells Warnungen. Der trainierte Kopf wird nicht für die Sequenzklassifizierung verwendet, also wird er verworfen und ein neuer Kopf mit zufälliger Gewichtung wird instanziiert.",
            correct: true
		},
		{
			text: "Der Kopf des vorher trainierten Modells wird verworfen.",
			explain: "Es muss etwas anderes passieren. Versuch es noch einmal!"
		},
        {
			text: "Nichts, da das Modell noch für die andere Aufgabe fein-tunen kann.",
			explain: "Der Kopf des trainierten Modells wurde nicht für die Lösung dieser Aufgabe trainiert, also sollte der Kopf verworfen werden!"
		}
	]}
/>

### 8. Was ist der Zweck von `TrainingArguments`?

Trainer verwendet werden.",
			explain: "Richtig!",
            correct: true
		},
		{
			text: "Hier wird die Größe des Modells angegeben.",
			explain: "Die Größe des Modells wird durch die Konfiguration des Modells festgelegt, nicht durch die Klasse TrainingArguments."
		},
		{
			text: "Sie enthält nur die Hyperparameter, die für die Auswertung verwendet werden.",
			explain: "In unserem Beispiel haben wir angegeben, wo das Modell und seine Kontrollpunkte gespeichert werden sollen. Versuche es noch einmal!"
		},
        {
			text: "Er enthält nur die Hyperparameter, die für das Training verwendet werden.",
			explain: "In unserem Beispiel haben wir auch eine Auswertungsstrategie verwendet, was sich auf die Auswertung auswirkt. Versuche es noch einmal!"
		}
	]}
/>

### 9. Warum solltest du die 🤗 Accelerate Bibliothek benutzen?

Trainer gemacht, nicht mit der 🤗 Accelerate Bibliothek. Versuch es noch einmal!"
		},
		{
			text: "Damit funktionieren unsere Trainingsschleifen bei verteilten Strategien.",
			explain: "Richtig! Mit 🤗 Accelerate funktionieren deine Trainingsschleifen für mehrere verteilte GPUs und TPUs.",
            correct: true
		},
        {
			text: "Es bietet mehr Funktionen zur Optimierung.",
			explain: "Nein, die 🤗 Accelerate Bibliothek stellt keine Optimierungsfunktionen zur Verfügung."
		}
	]}
/>

{:else}
### 4. Was passiert, wenn du eine der Klassen `TFAutoModelForXxx` mit einem vortrainierten Sprachmodell (z. B. `bert-base-uncased`) instanziierst, das einer anderen Aufgabe entspricht als der, für die es trainiert wurde?

TFAutoModelForSequenceClassification mit bert-base-uncased verwendet haben, bekamen wir beim Instanziieren des Modells Warnungen. Der trainierte Kopf wird nicht für die Sequenzklassifizierung verwendet, also wird er verworfen und ein neuer Kopf mit zufälligen Gewichten instanziiert.",
            correct: true
		},
		{
			text: "Der Kopf des vorher trainierten Modells wird verworfen.",
			explain: "Es muss etwas anderes passieren. Versuch es noch einmal!"
		},
        {
			text: "Nichts, da das Modell noch für die andere Aufgabe fein-tunen kann.",
			explain: "Der Kopf des trainierten Modells wurde nicht für die Lösung dieser Aufgabe trainiert, also sollten wir den Kopf verwerfen!"
		}
	]}
/>

### 5. Die Tensorflow Modelle von `transformers` sind bereits Keras Modelle. Welchen Vorteil bietet das?

TPUStrategy-Bereich ausführen, einschließlich der Initialisierung des Modells."
		},
		{
			text: "Du kannst bestehende Methoden wie compile(), fit() und predict() nutzen.",
			erklären: "Richtig! Wenn du erst einmal die Daten hast, erfordert das Training mit ihnen nur noch wenig Arbeit.",
            correct: true
		},
		{
			text: "Du lernst sowohl Keras als auch Transformer kennen.",
			explain: "Korrekt, aber wir suchen nach etwas anderem :)",
			correct: true
		},
        {
			text: "Du kannst ganz einfach Metriken für den Datensatz berechnen.",
			explain: "Keras hilft uns beim Training und der Auswertung des Modells, nicht bei der Berechnung von datensatzbezogenen Metriken."
		}
	]}
/>

### 6. Wie kannst du deine eigene benutzerdefinierte Metrik definieren?

tf.keras.metrics.Metric erstellen.",
			explain: "Großartig!",
			correct: true
		},
		{
			text: "Durch Verwendung der funktionalen Keras-API.",
			explain: "Versuch es noch einmal!"
		},
		{
			text: "Durch die Verwendung einer Callable mit der Signatur metric_fn(y_true, y_pred).",
			explain: "Korrekt!",
			correct: true
		},
        {
			text: "Indem du es googelst.",
			explain: "Das ist nicht die Antwort, nach der wir suchen, aber es sollte dir helfen, sie zu finden.",
			correct: true
		}
	]}
/>

{/if}

