Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
c050cd8
Updated discord links and nits
sergiopaniego Mar 4, 2025
b8e61b7
Update 4.mdx
GichanLee Aug 26, 2025
455b6c6
Update 6.mdx
csernakakos Sep 9, 2025
d79f20a
Update 1.mdx
VarunGuptaPy Sep 14, 2025
f4f7c90
Update 5.mdx: Added generation_strategies guide missing link
IdrisAkintobi Sep 14, 2025
3a7ac8e
feat(my): Add Myanmar translation for Chapter 1 and per-chapter Gloss…
kalixlouiis Sep 14, 2025
f599777
Fix internal doc links.
gkmngrgn Sep 14, 2025
2aefebf
hotfix: math in grpo 12.3a
burtenshaw Sep 16, 2025
6dc3025
fix typo in (en) chapter 1, sub-chatper 4
dhatri713 Sep 17, 2025
01d9c6a
feat(my): Add Myanmar language code to CI build workflows
kalixlouiis Sep 17, 2025
1ed580d
Merge pull request #1085 from kalixlouiis/add-myanmar-language-code
stevhliu Sep 17, 2025
4320ea6
Merge pull request #1079 from kalixlouiis/my-chapter1-translation
stevhliu Sep 17, 2025
e46506d
fix(my): Refine Myanmar translation for Chapter 0, Section 1
kalixlouiis Sep 17, 2025
6ddf6de
fix(my): Refine Chapter 0, Section 1 translation, update glossary, an…
kalixlouiis Sep 20, 2025
2c00fce
fix(my): Resolve KaTeX parsing error in chapter 1/7.mdx.
kalixlouiis Sep 20, 2025
8c0e498
Merge pull request #1086 from kalixlouiis/fix-chapter0-my-translation
stevhliu Sep 22, 2025
79b885a
Minor wording
kaifeng Sep 23, 2025
0fef90f
feat(my): Add Myanmar translation for Chapter 2 and per-chapter Glossary
kalixlouiis Sep 23, 2025
be27f57
Merge pull request #1094 from kalixlouiis/my-chapter2-translation
stevhliu Sep 24, 2025
3e7647f
feat(my): Add Myanmar translation for Chapter 3 and per-chapter Glossary
kalixlouiis Sep 25, 2025
2eaf7d9
added "to" in a sentence.mdx
jknilans Sep 26, 2025
2087469
Merge pull request #1096 from kalixlouiis/my-chapter3-translation
stevhliu Sep 26, 2025
e82281c
Merge pull request #1080 from gkmngrgn/patch-1
lunarflu Sep 27, 2025
c8a2a47
Merge pull request #1099 from jknilans/patch-1
lunarflu Sep 27, 2025
12acf75
Merge pull request #1093 from kaifeng/patch-1
lunarflu Sep 27, 2025
7f1d487
Merge pull request #1084 from dhatri713/fix-typo
lunarflu Sep 27, 2025
89ceca2
Merge pull request #1076 from VarunGuptaPy/patch-2
lunarflu Sep 27, 2025
c43907f
Merge pull request #1051 from GichanLee/patch-1
lunarflu Sep 27, 2025
e5ab39a
Merge pull request #1078 from IdrisAkintobi/patch-1
lunarflu Sep 27, 2025
bb697e2
Merge pull request #1071 from csernakakos/patch-1
lunarflu Sep 27, 2025
e503ec9
feat(my): Add Myanmar translation for Chapter 4 and per-chapter Glossary
kalixlouiis Sep 28, 2025
6796f92
Merge branch 'main' of github.com:huggingface/course into unit-12-dis…
sergiopaniego Sep 29, 2025
f13e9ee
Merge pull request #821 from sergiopaniego/unit-12-discord
sergiopaniego Sep 29, 2025
e05c3b6
migrate tips via script in all languages
burtenshaw Sep 29, 2025
8511d55
Merge pull request #1103 from huggingface/migrate-tips-to-new-format
burtenshaw Sep 29, 2025
0ae5710
Merge pull request #1102 from kalixlouiis/my-chapter4-translation
stevhliu Sep 29, 2025
4f93008
feat(my): Add Myanmar translation for Chapter 5 and per-chapter Glossary
kalixlouiis Sep 30, 2025
0cc5e90
fix error in chapter5/4.mdx
sittyatenyo Sep 30, 2025
d1324df
fix error in chapter5/4.mdx
kalixlouiis Sep 30, 2025
a768b2e
fix 2.mdx
kalixlouiis Sep 30, 2025
1ec68a5
Merge pull request #1104 from kalixlouiis/my-chapter5-translation
stevhliu Sep 30, 2025
19f5890
Merge branch 'release' into release-01-10-25
burtenshaw Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build_documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ jobs:
package: course
path_to_docs: course/chapters/
additional_args: --not_python_module
languages: ar bn de en es fa fr gj he hi id it ja ko ne pl pt ru ro te th tr vi zh-CN zh-TW
languages: ar bn de en es fa fr gj he hi id it ja ko my ne pl pt ru ro te th tr vi zh-CN zh-TW
secrets:
hf_token: ${{ secrets.HF_DOC_BUILD_PUSH }}
2 changes: 1 addition & 1 deletion .github/workflows/build_pr_documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ jobs:
package: course
path_to_docs: course/chapters/
additional_args: --not_python_module
languages: ar bn de en es fa fr gj he hi id it ja ko ne pl pt ru ro te th tr vi zh-CN zh-TW
languages: ar bn de en es fa fr gj he hi id it ja ko my ne pl pt ru ro te th tr vi zh-CN zh-TW
5 changes: 2 additions & 3 deletions chapters/bn/chapter2/1.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,5 @@

তারপরে আমরা টোকেনাইজার API দেখব, যা `pipeline()` ফাংশনের অন্য একটি প্রধান উপাদান। টোকেনাইজার জিনিসটা প্রথম ও শেষ প্রসেসিং স্টেপগুলোতে মেইনলি কাজে লাগে, নিউরাল নেটওয়ার্কের জন্য টেক্সট ডাটা থেকে সংখ্যাসূচক ইনপুটে রূপান্তর এবং পরে আবার প্রয়োজন অনুযায়ী সংখ্যাসূচক ডাটা থেকে টেক্সট ডাটাতে রূপান্তর করার সময়। পরিশেষে, আমরা আপনাকে দেখাব কিভাবে ব্যাচের মাধ্যমে একাধিক বাক্যকে একটি মডেলে পাঠানো যায়। তারপরে আরেকবার হাই-লেভেলে `tokenizer()` ফাংশনটিকে একনজরে দেখার মাধ্যমে পুরো অধ্যায়ের ইতি টানব।

<Tip>
⚠️ Model Hub এবং 🤗 Transformers এর সাথে উপলব্ধ সমস্ত বৈশিষ্ট্যগুলি থেকে উপকৃত হওয়ার জন্য, আমরা সাজেস্ট করি <a href="https://huggingface.co/join">এখানে একটি একাউন্ট তৈরি করার জন্যে।</a>.
</Tip>
> [!TIP]
> ⚠️ Model Hub এবং 🤗 Transformers এর সাথে উপলব্ধ সমস্ত বৈশিষ্ট্যগুলি থেকে উপকৃত হওয়ার জন্য, আমরা সাজেস্ট করি <a href="https://huggingface.co/join">এখানে একটি একাউন্ট তৈরি করার জন্যে।</a>.
56 changes: 18 additions & 38 deletions chapters/de/chapter1/3.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@

In diesem Abschnitt schauen wir uns an, was Transformer-Modelle zu leisten imstande sind. Zudem verwenden wir unser erstes Werkzeug aus der 🤗 Transformers-Bibliothek: die Funktion `pipeline()`.

<Tip>
👀 Siehst du rechts oben die Schaltfläche <em>Open in Colab</em>? Klicke darauf, um ein Google Colab Notebook, das alle Codebeispiele dieses Abschnitts enthält, zu öffnen. Diese Schaltfläche ist in jedem Abschnitt, der Codebeispiele enthält, zu finden.

Wenn du die Beispiele lieber lokal ausführen möchtest, empfehlen wir dir, einen Blick auf das Kapitel <a href="/course/chapter0">Einrichtung</a> zu werfen.
</Tip>
> [!TIP]
> 👀 Siehst du rechts oben die Schaltfläche <em>Open in Colab</em>? Klicke darauf, um ein Google Colab Notebook, das alle Codebeispiele dieses Abschnitts enthält, zu öffnen. Diese Schaltfläche ist in jedem Abschnitt, der Codebeispiele enthält, zu finden.
>
> Wenn du die Beispiele lieber lokal ausführen möchtest, empfehlen wir dir, einen Blick auf das Kapitel <a href="/course/chapter0">Einrichtung</a> zu werfen.

## Transformer-Modelle sind überall anzutreffen!

Expand All @@ -23,9 +22,8 @@ Transformer-Modelle werden verwendet, um alle Arten von CL-Aufgaben (engl. Tasks

Die [🤗 Transformers-Bibliothek](https://github.com/huggingface/transformers) bietet die Funktionalität, um diese geteilten Modelle zu erstellen und zu nutzen. Der [Model Hub](https://huggingface.co/models) enthält Tausende von vortrainierten Modellen, die jeder herunterladen und nutzen kann. Auch du kannst dort deine eigenen Modelle hochladen!

<Tip>
⚠️ Der Hugging Face Hub ist nicht auf Transformer-Modelle beschränkt. Jede bzw. jeder kann die von ihr bzw. ihm gewünschten Arten von Modellen oder Datensätzen teilen! <a href="https://huggingface.co/join">Erstelle ein Konto auf huggingface.co</a>, um alle verfügbaren Features nutzen zu können!
</Tip>
> [!TIP]
> ⚠️ Der Hugging Face Hub ist nicht auf Transformer-Modelle beschränkt. Jede bzw. jeder kann die von ihr bzw. ihm gewünschten Arten von Modellen oder Datensätzen teilen! <a href="https://huggingface.co/join">Erstelle ein Konto auf huggingface.co</a>, um alle verfügbaren Features nutzen zu können!

Bevor wir uns ansehen, wie Transformer-Modelle im Einzelnen funktionieren, widmen wir uns ein paar Beispielen, die veranschaulichen, wie sie zur Lösung interessanter CL-Problemstellungen eingesetzt werden können.

Expand Down Expand Up @@ -104,11 +102,8 @@ classifier(

Diese Pipeline heißt _zero-shot_, weil du das Modell nicht erst auf deine Daten feintunen musst, ehe du es verwenden kannst. Sie kann direkt die Wahrscheinlichkeiten für jede beliebige von dir vorgegebene Liste von Labels liefern!

<Tip>

✏️ **Probiere es aus!** Spiel mit deinen eigenen Sequenzen und Labels herum und beobachte, wie sich das Modell verhält.

</Tip>
> [!TIP]
> ✏️ **Probiere es aus!** Spiel mit deinen eigenen Sequenzen und Labels herum und beobachte, wie sich das Modell verhält.


## Textgenerierung
Expand All @@ -132,11 +127,8 @@ generator("In this course, we will teach you how to")

Mit dem Argument `num_return_sequences` kannst du steuern, wie viele verschiedene Sequenzen erzeugt werden und mit dem Argument `max_length`, wie lang der Ausgabetext insgesamt sein soll.

<Tip>

✏️ **Probiere es aus!** Wähle die Argumente `num_return_sequences` und `max_length` so, dass zwei Sätze mit jeweils 15 Wörtern erzeugt werden.

</Tip>
> [!TIP]
> ✏️ **Probiere es aus!** Wähle die Argumente `num_return_sequences` und `max_length` so, dass zwei Sätze mit jeweils 15 Wörtern erzeugt werden.


## Verwendung eines beliebigen Modells vom Hub in einer Pipeline
Expand Down Expand Up @@ -168,11 +160,8 @@ Du kannst deine Suche nach einem Modell verfeinern, indem du auf eines der `Lang

Nachdem du auf ein Modell geklickt und es ausgewählt hast, siehst du, dass es ein Widget gibt, mit dem du es direkt online ausprobieren kannst. Dementsprechend kannst du die Fähigkeiten eines Modells erst schnell testen, bevor du dich dazu entschließt, es herunterzuladen.

<Tip>

✏️ **Probiere es aus!** Verwende die Filter, um ein Textgenerierungsmodell für eine andere Sprache zu finden. Experimentiere ruhig ein wenig mit dem Widget und verwende das Modell in einer Pipeline!

</Tip>
> [!TIP]
> ✏️ **Probiere es aus!** Verwende die Filter, um ein Textgenerierungsmodell für eine andere Sprache zu finden. Experimentiere ruhig ein wenig mit dem Widget und verwende das Modell in einer Pipeline!

### Die Inference API

Expand Down Expand Up @@ -204,11 +193,8 @@ unmasker("This course will teach you all about <mask> models.", top_k=2)

Mit dem Argument `top_k` kannst du bestimmen, wie viele Möglichkeiten dir ausgegeben werden sollen. Beachte, dass das Modell hier das spezielle Wort `<mask>` auffüllt, das oft als *Mask-Token* bezeichnet wird. Andere Modelle, die dazu dienen, Maskierungen aufzufüllen, können andere Mask Tokens haben. Deshalb ist es immer gut, erst das verwendete Mask Token zu ermitteln, wenn du andere Modelle nutzen möchtest. Eine Möglichkeit, zu überprüfen, welches Mask Token verwendet wird, ist das Widget.

<Tip>

✏️ **Probiere es aus!** Suche im Hub nach dem Modell `bert-base-cased` und finde sein Mask Token im Widget, das auf der Inference API basiert, heraus. Was sagt dieses Modell für den oben in der Pipeline verwendeten Satz vorher?

</Tip>
> [!TIP]
> ✏️ **Probiere es aus!** Suche im Hub nach dem Modell `bert-base-cased` und finde sein Mask Token im Widget, das auf der Inference API basiert, heraus. Was sagt dieses Modell für den oben in der Pipeline verwendeten Satz vorher?

## Named Entity Recognition

Expand All @@ -232,11 +218,8 @@ Hier hat das Modell richtig erkannt, dass Sylvain eine Person (PER), Hugging Fac

In der Funktion zur Erstellung der Pipeline übergeben wir die Option `grouped_entities=True`, um die Pipeline anzuweisen, die Teile des Satzes, die der gleichen Entität entsprechen, zu gruppieren: Hier hat das Modell "Hugging" und "Face" richtigerweise als eine einzelne Organisation gruppiert, auch wenn der Name aus mehreren Wörtern besteht. Wie wir im nächsten Kapitel sehen werden, werden bei der Vorverarbeitung (engl. Preprocessing) sogar einige Wörter in kleinere Teile zerlegt. Zum Beispiel wird `Sylvain` in vier Teile zerlegt: `S`, `##yl`, `##va` und `##in`. Im Nachverarbeitungsschritt (engl. Post-Processing) hat die Pipeline diese Teile erfolgreich neu gruppiert.

<Tip>

✏️ **Probiere es aus!** Suche im Model Hub nach einem Modell, das in der Lage ist, Part-of-Speech-Tagging (in der Regel als POS abgekürzt) im Englischen durchzuführen (Anm.: d. h. Wortarten zuzuordnen). Was sagt dieses Modell für den Satz im obigen Beispiel vorher?

</Tip>
> [!TIP]
> ✏️ **Probiere es aus!** Suche im Model Hub nach einem Modell, das in der Lage ist, Part-of-Speech-Tagging (in der Regel als POS abgekürzt) im Englischen durchzuführen (Anm.: d. h. Wortarten zuzuordnen). Was sagt dieses Modell für den Satz im obigen Beispiel vorher?

## Frage-Antwort-Systeme (Question Answering)

Expand Down Expand Up @@ -320,10 +303,7 @@ translator("Ce cours est produit par Hugging Face.")

Wie bei der Textgenerierung und -zusammenfassung kannst du auch hier `max_length` oder `min_length` als Argumente für das Ergebnis angeben.

<Tip>

✏️ **Probiere es aus!** Suche nach Übersetzungsmodellen in anderen Sprachen und versuche, den vorangegangenen Satz in mehrere verschiedene Sprachen zu übersetzen.

</Tip>
> [!TIP]
> ✏️ **Probiere es aus!** Suche nach Übersetzungsmodellen in anderen Sprachen und versuche, den vorangegangenen Satz in mehrere verschiedene Sprachen zu übersetzen.

Die bisher gezeigten Pipelines dienen hauptsächlich zu Demonstrationszwecken. Sie wurden für bestimmte Aufgabenstellungen programmiert und sind nicht für Abwandlungen geeignet. Im nächsten Kapitel erfährst du, was sich hinter einer `pipeline()`-Funktion verbirgt und wie du ihr Verhalten anpassen kannst.
21 changes: 6 additions & 15 deletions chapters/de/chapter3/2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,8 @@ raw_train_dataset.features

Hinter den Kulissen ist `label` vom Typ `ClassLabel`, und die Zuordnung von Ganzzahlen zum Labelnamen wird im Ordner *names* gespeichert. `0` entspricht `not_equivalent`, also "nicht äquivalent", und `1` entspricht `equivalent`, also "äquivalent".

<Tip>

✏️ **Probier es aus!** Sieh dir das Element 15 der Trainingsdaten und Element 87 des Validierungsdaten an. Was sind ihre Labels?

</Tip>
> [!TIP]
> ✏️ **Probier es aus!** Sieh dir das Element 15 der Trainingsdaten und Element 87 des Validierungsdaten an. Was sind ihre Labels?

### Vorverarbeitung eines Datensatzes

Expand Down Expand Up @@ -191,11 +188,8 @@ inputs

In [Kapitel 2](/course/chapter2) haben wir die Schlüsselwerte `input_ids` und `attention_mask` behandelt, allerdings haben wir es aufgeschoben, über `token_type_ids` zu sprechen. In diesem Beispiel teilt diese dem Modell mit, welcher Teil des Input der erste Satz und welcher der zweite Satz ist.

<Tip>

✏️ **Probier es aus!** Nimm Element 15 der Trainingsdaten und tokenisiere die beiden Sätze separat und als Paar. Wo liegt der Unterschied zwischen den beiden Ergebnissen?

</Tip>
> [!TIP]
> ✏️ **Probier es aus!** Nimm Element 15 der Trainingsdaten und tokenisiere die beiden Sätze separat und als Paar. Wo liegt der Unterschied zwischen den beiden Ergebnissen?

Wenn wir die IDs in `input_ids` zurück in Worte dekodieren:

Expand Down Expand Up @@ -353,11 +347,8 @@ Das sieht gut aus! Jetzt, da wir vom Rohtext zu Batches übergegangen sind, mit

{/if}

<Tip>

✏️ **Probier es aus!** Repliziere die Vorverarbeitung auf dem GLUE SST-2-Datensatz. Es ist ein bisschen anders, da es aus einzelnen Sätzen statt aus Paaren besteht, aber der Rest von dem, was wir gemacht haben, sollte gleich aussehen. Alternative wäre eine schwierigere Herausforderung, eine Vorverarbeitungsfunktion zu schreiben, die bei allen GLUE-Aufgaben funktioniert.

</Tip>
> [!TIP]
> ✏️ **Probier es aus!** Repliziere die Vorverarbeitung auf dem GLUE SST-2-Datensatz. Es ist ein bisschen anders, da es aus einzelnen Sätzen statt aus Paaren besteht, aber der Rest von dem, was wir gemacht haben, sollte gleich aussehen. Alternative wäre eine schwierigere Herausforderung, eine Vorverarbeitungsfunktion zu schreiben, die bei allen GLUE-Aufgaben funktioniert.

{#if fw === 'tf'}

Expand Down
14 changes: 4 additions & 10 deletions chapters/de/chapter3/3.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,8 @@ from transformers import TrainingArguments
training_args = TrainingArguments("test-trainer")
```

<Tip>

💡 Wenn du dein Modell während des Trainings automatisch in das Hub hochladen möchtest, kann in `TrainingArguments` das Argument `push_to_hub=True` angegeben werden. Darüber erfahren wir in [Kapitel 4](/course/chapter4/3) mehr.

</Tip>
> [!TIP]
> 💡 Wenn du dein Modell während des Trainings automatisch in das Hub hochladen möchtest, kann in `TrainingArguments` das Argument `push_to_hub=True` angegeben werden. Darüber erfahren wir in [Kapitel 4](/course/chapter4/3) mehr.

Der zweite Schritt ist die Definition unseres Modells. Wie im [vorherigen Kapitel](/course/chapter2) verwenden wir die Klasse `AutoModelForSequenceClassification` mit zwei Labels:

Expand Down Expand Up @@ -164,9 +161,6 @@ Der `Trainer` funktioniert sofort auf mehreren GPUs oder TPUs und bietet zahlrei

Damit ist die Einführung in das Fein-tunen mit der `Trainer` API abgeschlossen. Beispiele für die gängigsten CL-Aufgaben werden in Kapitel 7 gegeben, aber jetzt schauen wir uns erst einmal an, wie man das Gleiche in PyTorch bewerkstelligen kann.

<Tip>

✏️ **Probier es aus!** Fein-tune ein Modell mit dem GLUE SST-2 Datensatz, indem du die Datenverarbeitung aus Abschnitt 2 verwendest.

</Tip>
> [!TIP]
> ✏️ **Probier es aus!** Fein-tune ein Modell mit dem GLUE SST-2 Datensatz, indem du die Datenverarbeitung aus Abschnitt 2 verwendest.

35 changes: 10 additions & 25 deletions chapters/de/chapter3/3_tf.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,8 @@ Im Gegensatz zu [Kapitel 2](/course/chapter2) wird eine Warnung angezeigt, nachd

Um das Modell mit unserem Datensatz fein-tunen zu können, müssen wir das Modell `kompilieren()` und unsere Daten an die `fit()`-Methode übergeben. Damit wird das Fein-tuning gestartet (dies sollte auf einer GPU ein paar Minuten dauern) und der Trainingsverlust sowie der Validierungsverlust am Ende jeder Epoche gemeldet.

<Tip>

🤗 Transformer Modelle haben eine besondere Fähigkeit, die die meisten Keras Modelle nicht haben - sie können automatisch einen geeigneten Verlust verwenden, der intern berechnet wird. Dieser Verlust wird standardmäßig verwendet, wenn in `compile()` kein Verlustargument angegeben wird. Um den internen Verlust zu verwenden, musst du deine Labels als Teil des Input übergeben und nicht als separates Label, wie es normalerweise bei Keras-Modellen der Fall ist. Beispiele dafür gibt es in Teil 2 des Kurses, wobei die Definition der richtigen Verlustfunktion schwierig sein kann. Für die Klassifizierung von Sequenzen eignet sich jedoch eine der Standardverlustfunktionen von Keras, die wir hier verwenden werden.

</Tip>
> [!TIP]
> 🤗 Transformer Modelle haben eine besondere Fähigkeit, die die meisten Keras Modelle nicht haben - sie können automatisch einen geeigneten Verlust verwenden, der intern berechnet wird. Dieser Verlust wird standardmäßig verwendet, wenn in `compile()` kein Verlustargument angegeben wird. Um den internen Verlust zu verwenden, musst du deine Labels als Teil des Input übergeben und nicht als separates Label, wie es normalerweise bei Keras-Modellen der Fall ist. Beispiele dafür gibt es in Teil 2 des Kurses, wobei die Definition der richtigen Verlustfunktion schwierig sein kann. Für die Klassifizierung von Sequenzen eignet sich jedoch eine der Standardverlustfunktionen von Keras, die wir hier verwenden werden.

```py
from tensorflow.keras.losses import SparseCategoricalCrossentropy
Expand All @@ -90,11 +87,8 @@ model.fit(
)
```

<Tip warning={true}>

Hier gibt es einen sehr häufigen Stolperstein - du *kannst* Keras einfach den Namen des Verlusts als String übergeben, aber standardmäßig geht Keras davon aus, dass du bereits einen Softmax auf die Outputs angewendet hast. Viele Modelle geben jedoch die Werte direkt vor der Anwendung des Softmax als *Logits* aus. Hier ist es wichtig der Keras Verlustfunktion mitzuteilen, dass unser Modell genau diess tut, und das geht nur indem sie direkt aufgerufen wird, und nicht über den Namen mit einem String.

</Tip>
> [!WARNING]
> Hier gibt es einen sehr häufigen Stolperstein - du *kannst* Keras einfach den Namen des Verlusts als String übergeben, aber standardmäßig geht Keras davon aus, dass du bereits einen Softmax auf die Outputs angewendet hast. Viele Modelle geben jedoch die Werte direkt vor der Anwendung des Softmax als *Logits* aus. Hier ist es wichtig der Keras Verlustfunktion mitzuteilen, dass unser Modell genau diess tut, und das geht nur indem sie direkt aufgerufen wird, und nicht über den Namen mit einem String.


### Verbesserung der Trainingsperformance
Expand Down Expand Up @@ -122,11 +116,8 @@ from tensorflow.keras.optimizers import Adam
opt = Adam(learning_rate=lr_scheduler)
```

<Tip>

Die 🤗 Transformer Bibliothek hat eine `create_optimizer()`-Funktion, die einen `AdamW`-Optimierer mit Lernratenabfall erzeugt. Das ist eine praktisches Tool, auf das wir in den nächsten Abschnitten des Kurses im Detail eingehen werden.

</Tip>
> [!TIP]
> Die 🤗 Transformer Bibliothek hat eine `create_optimizer()`-Funktion, die einen `AdamW`-Optimierer mit Lernratenabfall erzeugt. Das ist eine praktisches Tool, auf das wir in den nächsten Abschnitten des Kurses im Detail eingehen werden.

Somit haben wir einen neuen Optimierer definiert und können ihn zum Training verwenden. Zuerst laden wir das Modell neu, um die Änderungen an der Gewichtung aus dem letzten Trainingslauf zurückzusetzen, und dann können wir es mit dem neuen Optimierer kompilieren:

Expand All @@ -144,11 +135,8 @@ Jetzt starten wir einen erneuten Trainingslauf mit `fit`:
model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=3)
```

<Tip>

💡 Wenn du dein Modell während des Trainings automatisch in den Hub hochladen möchtest, kannst du in der Methode `model.fit()` einen `PushToHubCallback` mitgeben. Mehr darüber erfahren wir in [Kapitel 4](/course/chapter4/3)

</Tip>
> [!TIP]
> 💡 Wenn du dein Modell während des Trainings automatisch in den Hub hochladen möchtest, kannst du in der Methode `model.fit()` einen `PushToHubCallback` mitgeben. Mehr darüber erfahren wir in [Kapitel 4](/course/chapter4/3)

### Modell-Vorhersagen

Expand Down Expand Up @@ -188,8 +176,5 @@ Die genauen Ergebnisse können variieren, da die zufällige Initialisierung des

Damit ist die Einführung in das Fein-tunen mit der Keras-API abgeschlossen. Beispiele für die gängigsten CL-Aufgaben findest du in Kapitel 7.

<Tip>

✏️ **Probier es aus!** Fein-tune ein Modell mit dem GLUE SST-2 Datensatz, indem du die Datenverarbeitung aus Abschnitt 2 verwendest.

</Tip>
> [!TIP]
> ✏️ **Probier es aus!** Fein-tune ein Modell mit dem GLUE SST-2 Datensatz, indem du die Datenverarbeitung aus Abschnitt 2 verwendest.
Loading