import{s as it,o as rt,n as Oe}from"../chunks/scheduler.987d3921.js";import{S as pt,i as mt,g as f,s as i,r as g,A as dt,h as c,f as t,c as r,j as Ie,u as M,x as T,k as Ee,y as Ue,a as s,v as b,d as w,t as $,w as y}from"../chunks/index.c8b1fed4.js";import{T as et}from"../chunks/Tip.6bc1e794.js";import{Y as Ke}from"../chunks/Youtube.67f0a1fc.js";import{C as G}from"../chunks/CodeBlock.18094d58.js";import{D as ot}from"../chunks/DocNotebookDropdown.8be6c56e.js";import{F as lt,M as tt}from"../chunks/Markdown.10b8ab04.js";import{H as ke}from"../chunks/Heading.3fa3b67f.js";function ut(he){let p,j=`Es wird eine Warnung angezeigt, dass einige der trainierten Parameter nicht verwendet werden und einige Parameter zufällig
initialisiert werden. Machen Sie sich keine Sorgen, das ist völlig normal! Der vorher trainierte Kopf des BERT-Modells wird verworfen und durch einen zufällig initialisierten Klassifikationskopf ersetzt. Sie werden diesen neuen Modellkopf in Ihrer Sequenzklassifizierungsaufgabe feinabstimmen, indem Sie das Wissen des vortrainierten Modells auf ihn übertragen.`;return{c(){p=f("p"),p.textContent=j},l(m){p=c(m,"P",{"data-svelte-h":!0}),T(p)!=="svelte-bezfbk"&&(p.textContent=j)},m(m,k){s(m,p,k)},p:Oe,d(m){m&&t(p)}}}function ht(he){let p,j,m,k,J,le="🤗 Transformers bietet eine <code>Trainer</code>-Klasse, die für das Training von 🤗 Transformers-Modellen optimiert ist und es einfacher macht, mit dem Training zu beginnen, ohne manuell eine eigene Trainingsschleife zu schreiben. Die <code>Trainer</code>-API unterstützt eine breite Palette von Trainingsoptionen und Funktionen wie Logging, Gradientenakkumulation und gemischte Präzision.",x,ie,E='Beginnen Sie mit dem Laden Ihres Modells und geben Sie die Anzahl der erwarteten Labels an. Aus dem Yelp Review <a href="https://huggingface.co/datasets/yelp_review_full#data-fields" rel="nofollow">dataset card</a> wissen Sie, dass es fünf Labels gibt:',re,S,A,fe,F,v,ce,H,ge='Als Nächstes erstellen Sie eine Klasse <code>TrainingArguments</code>, die alle Hyperparameter enthält, die Sie einstellen können, sowie Flags zur Aktivierung verschiedener Trainingsoptionen. Für dieses Lernprogramm können Sie mit den Standard- <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments" rel="nofollow">Hyperparametern</a> beginnen, aber Sie können mit diesen experimentieren, um Ihre optimalen Einstellungen zu finden.',X,B,ne="Geben Sie an, wo die Kontrollpunkte Ihres Trainings gespeichert werden sollen:",Me,Y,se,R,je,Z,D='Der <code>Trainer</code> wertet die Leistung des Modells während des Trainings nicht automatisch aus. Sie müssen <code>Trainer</code> eine Funktion übergeben, um Metriken zu berechnen und zu berichten. Die <a href="https://huggingface.co/docs/evaluate/index" rel="nofollow">🤗 Evaluate</a> Bibliothek bietet eine einfache <a href="https://huggingface.co/spaces/evaluate-metric/accuracy" rel="nofollow"><code>accuracy</code></a> Funktion, die Sie mit der <code>evaluate.load</code> Funktion laden können (siehe diese <a href="https://huggingface.co/docs/evaluate/a_quick_tour" rel="nofollow">quicktour</a> für weitere Informationen):',pe,L,P,U,be="Rufen Sie <code>compute</code> auf <code>metric</code> auf, um die Genauigkeit Ihrer Vorhersagen zu berechnen. Bevor Sie Ihre Vorhersagen an <code>compute</code> übergeben, müssen Sie die Vorhersagen in Logits umwandeln (denken Sie daran, dass alle 🤗 Transformers-Modelle Logits zurückgeben):",me,N,K,I,we="Wenn Sie Ihre Bewertungsmetriken während der Feinabstimmung überwachen möchten, geben Sie den Parameter <code>evaluation_strategy</code> in Ihren Trainingsargumenten an, um die Bewertungsmetrik am Ende jeder Epoche zu ermitteln:",ae,C,$e,O,_,ye,de="Erstellen Sie ein <code>Trainer</code>-Objekt mit Ihrem Modell, Trainingsargumenten, Trainings- und Testdatensätzen und einer Evaluierungsfunktion:",V,ee,W,oe,Q="Anschließend können Sie Ihr Modell durch den Aufruf von <code>train()</code> optimieren:",te,z,ue;return p=new Ke({props:{id:"nvBXf7s7vTI"}}),m=new ke({props:{title:"Trainieren mit PyTorch Trainer",local:"trainieren-mit-pytorch-trainer",headingTag:"h2"}}),S=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiUyQyUyMG51bV9sYWJlbHMlM0Q1KQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>, num_labels=<span class="hljs-number">5</span>)`,wrap:!1}}),fe=new et({props:{$$slots:{default:[ut]},$$scope:{ctx:he}}}),v=new ke({props:{title:"Hyperparameter für das Training",local:"hyperparameter-für-das-training",headingTag:"h3"}}),Y=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKG91dHB1dF9kaXIlM0QlMjJ0ZXN0X3RyYWluZXIlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments

<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(output_dir=<span class="hljs-string">&quot;test_trainer&quot;</span>)`,wrap:!1}}),R=new ke({props:{title:"Auswerten",local:"auswerten",headingTag:"h3"}}),L=new G({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)`,wrap:!1}}),N=new G({props:{code:"ZGVmJTIwY29tcHV0ZV9tZXRyaWNzKGV2YWxfcHJlZCklM0ElMEElMjAlMjAlMjAlMjBsb2dpdHMlMkMlMjBsYWJlbHMlMjAlM0QlMjBldmFsX3ByZWQlMEElMjAlMjAlMjAlMjBwcmVkaWN0aW9ucyUyMCUzRCUyMG5wLmFyZ21heChsb2dpdHMlMkMlMjBheGlzJTNELTEpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwbWV0cmljLmNvbXB1dGUocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyUyQyUyMHJlZmVyZW5jZXMlM0RsYWJlbHMp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_pred</span>):
<span class="hljs-meta">... </span>    logits, labels = eval_pred
<span class="hljs-meta">... </span>    predictions = np.argmax(logits, axis=-<span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> metric.compute(predictions=predictions, references=labels)`,wrap:!1}}),C=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyhvdXRwdXRfZGlyJTNEJTIydGVzdF90cmFpbmVyJTIyJTJDJTIwZXZhbHVhdGlvbl9zdHJhdGVneSUzRCUyMmVwb2NoJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer

<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(output_dir=<span class="hljs-string">&quot;test_trainer&quot;</span>, evaluation_strategy=<span class="hljs-string">&quot;epoch&quot;</span>)`,wrap:!1}}),O=new ke({props:{title:"Trainer",local:"trainer",headingTag:"h3"}}),ee=new G({props:{code:"dHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHNtYWxsX3RyYWluX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBldmFsX2RhdGFzZXQlM0RzbWFsbF9ldmFsX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBjb21wdXRlX21ldHJpY3MlM0Rjb21wdXRlX21ldHJpY3MlMkMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>trainer = Trainer(
<span class="hljs-meta">... </span>    model=model,
<span class="hljs-meta">... </span>    args=training_args,
<span class="hljs-meta">... </span>    train_dataset=small_train_dataset,
<span class="hljs-meta">... </span>    eval_dataset=small_eval_dataset,
<span class="hljs-meta">... </span>    compute_metrics=compute_metrics,
<span class="hljs-meta">... </span>)`,wrap:!1}}),z=new G({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.train()',wrap:!1}}),{c(){g(p.$$.fragment),j=i(),g(m.$$.fragment),k=i(),J=f("p"),J.innerHTML=le,x=i(),ie=f("p"),ie.innerHTML=E,re=i(),g(S.$$.fragment),A=i(),g(fe.$$.fragment),F=i(),g(v.$$.fragment),ce=i(),H=f("p"),H.innerHTML=ge,X=i(),B=f("p"),B.textContent=ne,Me=i(),g(Y.$$.fragment),se=i(),g(R.$$.fragment),je=i(),Z=f("p"),Z.innerHTML=D,pe=i(),g(L.$$.fragment),P=i(),U=f("p"),U.innerHTML=be,me=i(),g(N.$$.fragment),K=i(),I=f("p"),I.innerHTML=we,ae=i(),g(C.$$.fragment),$e=i(),g(O.$$.fragment),_=i(),ye=f("p"),ye.innerHTML=de,V=i(),g(ee.$$.fragment),W=i(),oe=f("p"),oe.innerHTML=Q,te=i(),g(z.$$.fragment)},l(a){M(p.$$.fragment,a),j=r(a),M(m.$$.fragment,a),k=r(a),J=c(a,"P",{"data-svelte-h":!0}),T(J)!=="svelte-ywve2u"&&(J.innerHTML=le),x=r(a),ie=c(a,"P",{"data-svelte-h":!0}),T(ie)!=="svelte-oah9w3"&&(ie.innerHTML=E),re=r(a),M(S.$$.fragment,a),A=r(a),M(fe.$$.fragment,a),F=r(a),M(v.$$.fragment,a),ce=r(a),H=c(a,"P",{"data-svelte-h":!0}),T(H)!=="svelte-1555wwj"&&(H.innerHTML=ge),X=r(a),B=c(a,"P",{"data-svelte-h":!0}),T(B)!=="svelte-1o1x4yi"&&(B.textContent=ne),Me=r(a),M(Y.$$.fragment,a),se=r(a),M(R.$$.fragment,a),je=r(a),Z=c(a,"P",{"data-svelte-h":!0}),T(Z)!=="svelte-1p9zvd2"&&(Z.innerHTML=D),pe=r(a),M(L.$$.fragment,a),P=r(a),U=c(a,"P",{"data-svelte-h":!0}),T(U)!=="svelte-160lcaf"&&(U.innerHTML=be),me=r(a),M(N.$$.fragment,a),K=r(a),I=c(a,"P",{"data-svelte-h":!0}),T(I)!=="svelte-x4pt11"&&(I.innerHTML=we),ae=r(a),M(C.$$.fragment,a),$e=r(a),M(O.$$.fragment,a),_=r(a),ye=c(a,"P",{"data-svelte-h":!0}),T(ye)!=="svelte-1ogtevx"&&(ye.innerHTML=de),V=r(a),M(ee.$$.fragment,a),W=r(a),oe=c(a,"P",{"data-svelte-h":!0}),T(oe)!=="svelte-1cpe0hd"&&(oe.innerHTML=Q),te=r(a),M(z.$$.fragment,a)},m(a,u){b(p,a,u),s(a,j,u),b(m,a,u),s(a,k,u),s(a,J,u),s(a,x,u),s(a,ie,u),s(a,re,u),b(S,a,u),s(a,A,u),b(fe,a,u),s(a,F,u),b(v,a,u),s(a,ce,u),s(a,H,u),s(a,X,u),s(a,B,u),s(a,Me,u),b(Y,a,u),s(a,se,u),b(R,a,u),s(a,je,u),s(a,Z,u),s(a,pe,u),b(L,a,u),s(a,P,u),s(a,U,u),s(a,me,u),b(N,a,u),s(a,K,u),s(a,I,u),s(a,ae,u),b(C,a,u),s(a,$e,u),b(O,a,u),s(a,_,u),s(a,ye,u),s(a,V,u),b(ee,a,u),s(a,W,u),s(a,oe,u),s(a,te,u),b(z,a,u),ue=!0},p(a,u){const q={};u&2&&(q.$$scope={dirty:u,ctx:a}),fe.$set(q)},i(a){ue||(w(p.$$.fragment,a),w(m.$$.fragment,a),w(S.$$.fragment,a),w(fe.$$.fragment,a),w(v.$$.fragment,a),w(Y.$$.fragment,a),w(R.$$.fragment,a),w(L.$$.fragment,a),w(N.$$.fragment,a),w(C.$$.fragment,a),w(O.$$.fragment,a),w(ee.$$.fragment,a),w(z.$$.fragment,a),ue=!0)},o(a){$(p.$$.fragment,a),$(m.$$.fragment,a),$(S.$$.fragment,a),$(fe.$$.fragment,a),$(v.$$.fragment,a),$(Y.$$.fragment,a),$(R.$$.fragment,a),$(L.$$.fragment,a),$(N.$$.fragment,a),$(C.$$.fragment,a),$(O.$$.fragment,a),$(ee.$$.fragment,a),$(z.$$.fragment,a),ue=!1},d(a){a&&(t(j),t(k),t(J),t(x),t(ie),t(re),t(A),t(F),t(ce),t(H),t(X),t(B),t(Me),t(se),t(je),t(Z),t(pe),t(P),t(U),t(me),t(K),t(I),t(ae),t($e),t(_),t(ye),t(V),t(W),t(oe),t(te)),y(p,a),y(m,a),y(S,a),y(fe,a),y(v,a),y(Y,a),y(R,a),y(L,a),y(N,a),y(C,a),y(O,a),y(ee,a),y(z,a)}}}function ft(he){let p,j;return p=new tt({props:{$$slots:{default:[ht]},$$scope:{ctx:he}}}),{c(){g(p.$$.fragment)},l(m){M(p.$$.fragment,m)},m(m,k){b(p,m,k),j=!0},p(m,k){const J={};k&2&&(J.$$scope={dirty:k,ctx:m}),p.$set(J)},i(m){j||(w(p.$$.fragment,m),j=!0)},o(m){$(p.$$.fragment,m),j=!1},d(m){y(p,m)}}}function ct(he){let p,j=`Sie müssen Ihren Modellen kein Verlustargument übergeben, wenn Sie sie <code>compile()</code>! Hugging-Face-Modelle wählen automatisch
einen Loss, der für ihre Aufgabe und Modellarchitektur geeignet ist, wenn dieses Argument leer gelassen wird. Sie können jederzeit außer Kraft setzen, indem Sie selbst einen Loss angeben, wenn Sie das möchten!`;return{c(){p=f("p"),p.innerHTML=j},l(m){p=c(m,"P",{"data-svelte-h":!0}),T(p)!=="svelte-16d08n8"&&(p.innerHTML=j)},m(m,k){s(m,p,k)},p:Oe,d(m){m&&t(p)}}}function gt(he){let p,j,m,k,J,le,x,ie="Sie können auch 🤗 Transformers Modelle in TensorFlow mit der Keras API trainieren!",E,re,S,A,fe=`Wenn Sie ein 🤗 Transformers Modell mit der Keras API trainieren wollen, müssen Sie Ihren Datensatz in ein Format konvertieren, das
Keras versteht. Wenn Ihr Datensatz klein ist, können Sie das Ganze einfach in NumPy-Arrays konvertieren und an Keras übergeben.
Probieren wir das zuerst aus, bevor wir etwas Komplizierteres tun.`,F,v,ce=`Laden Sie zunächst ein Dataset. Wir werden den CoLA-Datensatz aus dem <a href="https://huggingface.co/datasets/glue" rel="nofollow">GLUE-Benchmark</a> verwenden,
da es sich um eine einfache Aufgabe zur Klassifizierung von binärem Text handelt, und nehmen vorerst nur den Trainingssplit.`,H,ge,X,B,ne=`Als nächstes laden Sie einen Tokenizer und tokenisieren die Daten als NumPy-Arrays. Beachten Sie, dass die Beschriftungen bereits eine Liste von 0 und 1en sind,
Wir können sie also ohne Tokenisierung direkt in ein NumPy-Array konvertieren!`,Me,Y,se,R,je='Schließlich laden, <a href="https://keras.io/api/models/model_training_apis/#compile-method" rel="nofollow"><code>compile</code></a> und <a href="https://keras.io/api/models/model_training_apis/#fit-method" rel="nofollow"><code>fit</code></a> Sie das Modell:',Z,D,pe,L,P,U,be=`Dieser Ansatz eignet sich hervorragend für kleinere Datensätze, aber bei größeren Datensätzen kann er zu einem Problem werden. Warum?
Weil das tokenisierte Array und die Beschriftungen vollständig in den Speicher geladen werden müssten, und weil NumPy nicht mit
“gezackte” Arrays nicht verarbeiten kann, so dass jedes tokenisierte Sample auf die Länge des längsten Samples im gesamten Datensatz aufgefüllt werden müsste.
Datensatzes aufgefüllt werden. Dadurch wird das Array noch größer, und all die aufgefüllten Token verlangsamen auch das Training!`,me,N,K,I,we=`Wenn Sie eine Verlangsamung des Trainings vermeiden wollen, können Sie Ihre Daten stattdessen als <code>tf.data.Dataset</code> laden. Sie können zwar Ihre eigene
tf.data”-Pipeline schreiben können, wenn Sie wollen, haben wir zwei bequeme Methoden, um dies zu tun:`,ae,C,$e=`<li><code>prepare_tf_dataset()</code>: Dies ist die Methode, die wir in den meisten Fällen empfehlen. Da es sich um eine Methode
Ihres Modells ist, kann sie das Modell inspizieren, um automatisch herauszufinden, welche Spalten als Modelleingaben verwendet werden können, und
verwirft die anderen, um einen einfacheren, leistungsfähigeren Datensatz zu erstellen.</li> <li>[~datasets.Dataset.to_tf_dataset\`]: Diese Methode ist eher auf niedriger Ebene angesiedelt und ist nützlich, wenn Sie genau kontrollieren wollen, wie
Dataset erstellt wird, indem man genau angibt, welche <code>columns</code> und <code>label_cols</code> einbezogen werden sollen.</li>`,O,_,ye="Bevor Sie [~TFPreTrainedModel.prepare_tf_dataset`] verwenden können, müssen Sie die Tokenizer-Ausgaben als Spalten zu Ihrem Datensatz hinzufügen, wie in\ndem folgenden Codebeispiel:",de,V,ee,W,oe=`Denken Sie daran, dass Hugging Face-Datensätze standardmäßig auf der Festplatte gespeichert werden, so dass dies nicht zu einem erhöhten Arbeitsspeicherbedarf führen wird! Sobald die
Spalten hinzugefügt wurden, können Sie Batches aus dem Datensatz streamen und zu jedem Batch Auffüllungen hinzufügen, was die Anzahl der Auffüllungs-Token im Vergleich zum Auffüllen des gesamten Datensatzes reduziert.`,Q,te,z,ue,a=`Beachten Sie, dass Sie im obigen Codebeispiel den Tokenizer an <code>prepare_tf_dataset</code> übergeben müssen, damit die Stapel beim Laden korrekt aufgefüllt werden können.
Wenn alle Stichproben in Ihrem Datensatz die gleiche Länge haben und kein Auffüllen erforderlich ist, können Sie dieses Argument weglassen.
Wenn Sie etwas Komplexeres als nur das Auffüllen von Stichproben benötigen (z. B. das Korrumpieren von Token für die maskierte Sprachmodellierung), können Sie das Argument
Modellierung), können Sie stattdessen das Argument <code>collate_fn</code> verwenden, um eine Funktion zu übergeben, die aufgerufen wird, um die
Liste von Stichproben in einen Stapel umwandelt und alle gewünschten Vorverarbeitungen vornimmt. Siehe unsere
<a href="https://github.com/huggingface/transformers/tree/main/examples" rel="nofollow">examples</a> oder
<a href="https://huggingface.co/docs/transformers/notebooks" rel="nofollow">notebooks</a>, um diesen Ansatz in Aktion zu sehen.`,u,q,Je="Sobald Sie einen <code>tf.data.Dataset</code> erstellt haben, können Sie das Modell wie zuvor kompilieren und anpassen:",ve,ze,Te;return m=new Ke({props:{id:"rnTGBy2ax1c"}}),J=new ke({props:{title:"Trainieren Sie ein TensorFlow-Modell mit Keras",local:"trainieren-sie-ein-tensorflow-modell-mit-keras",headingTag:"h2"}}),re=new ke({props:{title:"Laden von Daten für Keras",local:"laden-von-daten-für-keras",headingTag:"h3"}}),ge=new G({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJnbHVlJTIyJTJDJTIwJTIyY29sYSUyMiklMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldCU1QiUyMnRyYWluJTIyJTVEJTIwJTIwJTIzJTIwSnVzdCUyMHRha2UlMjB0aGUlMjB0cmFpbmluZyUyMHNwbGl0JTIwZm9yJTIwbm93",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

dataset = load_dataset(<span class="hljs-string">&quot;glue&quot;</span>, <span class="hljs-string">&quot;cola&quot;</span>)
dataset = dataset[<span class="hljs-string">&quot;train&quot;</span>]  <span class="hljs-comment"># Just take the training split for now</span>`,wrap:!1}}),Y=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBdG9rZW5pemVkX2RhdGElMjAlM0QlMjB0b2tlbml6ZXIoZGF0YXNldCU1QiUyMnRleHQlMjIlNUQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMm5wJTIyJTJDJTIwcGFkZGluZyUzRFRydWUpJTBBJTIzJTIwVG9rZW5pemVyJTIwcmV0dXJucyUyMGElMjBCYXRjaEVuY29kaW5nJTJDJTIwYnV0JTIwd2UlMjBjb252ZXJ0JTIwdGhhdCUyMHRvJTIwYSUyMGRpY3QlMjBmb3IlMjBLZXJhcyUwQXRva2VuaXplZF9kYXRhJTIwJTNEJTIwZGljdCh0b2tlbml6ZWRfZGF0YSklMEElMEFsYWJlbHMlMjAlM0QlMjBucC5hcnJheShkYXRhc2V0JTVCJTIybGFiZWwlMjIlNUQpJTIwJTIwJTIzJTIwTGFiZWwlMjBpcyUyMGFscmVhZHklMjBhbiUyMGFycmF5JTIwb2YlMjAwJTIwYW5kJTIwMQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
tokenized_data = tokenizer(dataset[<span class="hljs-string">&quot;text&quot;</span>], return_tensors=<span class="hljs-string">&quot;np&quot;</span>, padding=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Tokenizer returns a BatchEncoding, but we convert that to a dict for Keras</span>
tokenized_data = <span class="hljs-built_in">dict</span>(tokenized_data)

labels = np.array(dataset[<span class="hljs-string">&quot;label&quot;</span>])  <span class="hljs-comment"># Label is already an array of 0 and 1</span>`,wrap:!1}}),D=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQWZyb20lMjB0ZW5zb3JmbG93LmtlcmFzLm9wdGltaXplcnMlMjBpbXBvcnQlMjBBZGFtJTBBJTBBJTIzJTIwTG9hZCUyMGFuZCUyMGNvbXBpbGUlMjBvdXIlMjBtb2RlbCUwQW1vZGVsJTIwJTNEJTIwVEZBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBJTIzJTIwTG93ZXIlMjBsZWFybmluZyUyMHJhdGVzJTIwYXJlJTIwb2Z0ZW4lMjBiZXR0ZXIlMjBmb3IlMjBmaW5lLXR1bmluZyUyMHRyYW5zZm9ybWVycyUwQW1vZGVsLmNvbXBpbGUob3B0aW1pemVyJTNEQWRhbSgzZS01KSklMEElMEFtb2RlbC5maXQodG9rZW5pemVkX2RhdGElMkMlMjBsYWJlbHMp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSequenceClassification
<span class="hljs-keyword">from</span> tensorflow.keras.optimizers <span class="hljs-keyword">import</span> Adam

<span class="hljs-comment"># Load and compile our model</span>
model = TFAutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
<span class="hljs-comment"># Lower learning rates are often better for fine-tuning transformers</span>
model.<span class="hljs-built_in">compile</span>(optimizer=Adam(<span class="hljs-number">3e-5</span>))

model.fit(tokenized_data, labels)`,wrap:!1}}),L=new et({props:{$$slots:{default:[ct]},$$scope:{ctx:he}}}),N=new ke({props:{title:"Laden von Daten als tf.data.Dataset",local:"laden-von-daten-als-tfdatadataset",headingTag:"h3"}}),V=new G({props:{code:"ZGVmJTIwdG9rZW5pemVfZGF0YXNldChkYXRhKSUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyMEtleXMlMjBvZiUyMHRoZSUyMHJldHVybmVkJTIwZGljdGlvbmFyeSUyMHdpbGwlMjBiZSUyMGFkZGVkJTIwdG8lMjB0aGUlMjBkYXRhc2V0JTIwYXMlMjBjb2x1bW5zJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9rZW5pemVyKGRhdGElNUIlMjJ0ZXh0JTIyJTVEKSUwQSUwQSUwQWRhdGFzZXQlMjAlM0QlMjBkYXRhc2V0Lm1hcCh0b2tlbml6ZV9kYXRhc2V0KQ==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_dataset</span>(<span class="hljs-params">data</span>):
    <span class="hljs-comment"># Keys of the returned dictionary will be added to the dataset as columns</span>
    <span class="hljs-keyword">return</span> tokenizer(data[<span class="hljs-string">&quot;text&quot;</span>])


dataset = dataset.<span class="hljs-built_in">map</span>(tokenize_dataset)`,wrap:!1}}),te=new G({props:{code:"dGZfZGF0YXNldCUyMCUzRCUyMG1vZGVsLnByZXBhcmVfdGZfZGF0YXNldChkYXRhc2V0JTJDJTIwYmF0Y2hfc2l6ZSUzRDE2JTJDJTIwc2h1ZmZsZSUzRFRydWUlMkMlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tf_dataset = model.prepare_tf_dataset(dataset, batch_size=<span class="hljs-number">16</span>, shuffle=<span class="hljs-literal">True</span>, tokenizer=tokenizer)',wrap:!1}}),ze=new G({props:{code:"bW9kZWwuY29tcGlsZShvcHRpbWl6ZXIlM0RBZGFtKDNlLTUpKSUwQSUwQW1vZGVsLmZpdCh0Zl9kYXRhc2V0KQ==",highlighted:`model.<span class="hljs-built_in">compile</span>(optimizer=Adam(<span class="hljs-number">3e-5</span>))

model.fit(tf_dataset)`,wrap:!1}}),{c(){p=f("a"),j=i(),g(m.$$.fragment),k=i(),g(J.$$.fragment),le=i(),x=f("p"),x.textContent=ie,E=i(),g(re.$$.fragment),S=i(),A=f("p"),A.textContent=fe,F=i(),v=f("p"),v.innerHTML=ce,H=i(),g(ge.$$.fragment),X=i(),B=f("p"),B.textContent=ne,Me=i(),g(Y.$$.fragment),se=i(),R=f("p"),R.innerHTML=je,Z=i(),g(D.$$.fragment),pe=i(),g(L.$$.fragment),P=i(),U=f("p"),U.textContent=be,me=i(),g(N.$$.fragment),K=i(),I=f("p"),I.innerHTML=we,ae=i(),C=f("ul"),C.innerHTML=$e,O=i(),_=f("p"),_.textContent=ye,de=i(),g(V.$$.fragment),ee=i(),W=f("p"),W.textContent=oe,Q=i(),g(te.$$.fragment),z=i(),ue=f("p"),ue.innerHTML=a,u=i(),q=f("p"),q.innerHTML=Je,ve=i(),g(ze.$$.fragment),this.h()},l(l){p=c(l,"A",{id:!0}),Ie(p).forEach(t),j=r(l),M(m.$$.fragment,l),k=r(l),M(J.$$.fragment,l),le=r(l),x=c(l,"P",{"data-svelte-h":!0}),T(x)!=="svelte-suq9fw"&&(x.textContent=ie),E=r(l),M(re.$$.fragment,l),S=r(l),A=c(l,"P",{"data-svelte-h":!0}),T(A)!=="svelte-lrmpkn"&&(A.textContent=fe),F=r(l),v=c(l,"P",{"data-svelte-h":!0}),T(v)!=="svelte-dxablh"&&(v.innerHTML=ce),H=r(l),M(ge.$$.fragment,l),X=r(l),B=c(l,"P",{"data-svelte-h":!0}),T(B)!=="svelte-nx6p2e"&&(B.textContent=ne),Me=r(l),M(Y.$$.fragment,l),se=r(l),R=c(l,"P",{"data-svelte-h":!0}),T(R)!=="svelte-kflty"&&(R.innerHTML=je),Z=r(l),M(D.$$.fragment,l),pe=r(l),M(L.$$.fragment,l),P=r(l),U=c(l,"P",{"data-svelte-h":!0}),T(U)!=="svelte-wwgd4w"&&(U.textContent=be),me=r(l),M(N.$$.fragment,l),K=r(l),I=c(l,"P",{"data-svelte-h":!0}),T(I)!=="svelte-1lpx072"&&(I.innerHTML=we),ae=r(l),C=c(l,"UL",{"data-svelte-h":!0}),T(C)!=="svelte-890yzk"&&(C.innerHTML=$e),O=r(l),_=c(l,"P",{"data-svelte-h":!0}),T(_)!=="svelte-1q3yv6v"&&(_.textContent=ye),de=r(l),M(V.$$.fragment,l),ee=r(l),W=c(l,"P",{"data-svelte-h":!0}),T(W)!=="svelte-1vj6yju"&&(W.textContent=oe),Q=r(l),M(te.$$.fragment,l),z=r(l),ue=c(l,"P",{"data-svelte-h":!0}),T(ue)!=="svelte-45kslj"&&(ue.innerHTML=a),u=r(l),q=c(l,"P",{"data-svelte-h":!0}),T(q)!=="svelte-kqyxgh"&&(q.innerHTML=Je),ve=r(l),M(ze.$$.fragment,l),this.h()},h(){Ee(p,"id","keras")},m(l,h){s(l,p,h),s(l,j,h),b(m,l,h),s(l,k,h),b(J,l,h),s(l,le,h),s(l,x,h),s(l,E,h),b(re,l,h),s(l,S,h),s(l,A,h),s(l,F,h),s(l,v,h),s(l,H,h),b(ge,l,h),s(l,X,h),s(l,B,h),s(l,Me,h),b(Y,l,h),s(l,se,h),s(l,R,h),s(l,Z,h),b(D,l,h),s(l,pe,h),b(L,l,h),s(l,P,h),s(l,U,h),s(l,me,h),b(N,l,h),s(l,K,h),s(l,I,h),s(l,ae,h),s(l,C,h),s(l,O,h),s(l,_,h),s(l,de,h),b(V,l,h),s(l,ee,h),s(l,W,h),s(l,Q,h),b(te,l,h),s(l,z,h),s(l,ue,h),s(l,u,h),s(l,q,h),s(l,ve,h),b(ze,l,h),Te=!0},p(l,h){const Ce={};h&2&&(Ce.$$scope={dirty:h,ctx:l}),L.$set(Ce)},i(l){Te||(w(m.$$.fragment,l),w(J.$$.fragment,l),w(re.$$.fragment,l),w(ge.$$.fragment,l),w(Y.$$.fragment,l),w(D.$$.fragment,l),w(L.$$.fragment,l),w(N.$$.fragment,l),w(V.$$.fragment,l),w(te.$$.fragment,l),w(ze.$$.fragment,l),Te=!0)},o(l){$(m.$$.fragment,l),$(J.$$.fragment,l),$(re.$$.fragment,l),$(ge.$$.fragment,l),$(Y.$$.fragment,l),$(D.$$.fragment,l),$(L.$$.fragment,l),$(N.$$.fragment,l),$(V.$$.fragment,l),$(te.$$.fragment,l),$(ze.$$.fragment,l),Te=!1},d(l){l&&(t(p),t(j),t(k),t(le),t(x),t(E),t(S),t(A),t(F),t(v),t(H),t(X),t(B),t(Me),t(se),t(R),t(Z),t(pe),t(P),t(U),t(me),t(K),t(I),t(ae),t(C),t(O),t(_),t(de),t(ee),t(W),t(Q),t(z),t(ue),t(u),t(q),t(ve)),y(m,l),y(J,l),y(re,l),y(ge,l),y(Y,l),y(D,l),y(L,l),y(N,l),y(V,l),y(te,l),y(ze,l)}}}function Mt(he){let p,j;return p=new tt({props:{$$slots:{default:[gt]},$$scope:{ctx:he}}}),{c(){g(p.$$.fragment)},l(m){M(p.$$.fragment,m)},m(m,k){b(p,m,k),j=!0},p(m,k){const J={};k&2&&(J.$$scope={dirty:k,ctx:m}),p.$set(J)},i(m){j||(w(p.$$.fragment,m),j=!0)},o(m){$(p.$$.fragment,m),j=!1},d(m){y(p,m)}}}function bt(he){let p,j='Holen Sie sich mit einem gehosteten Notebook wie <a href="https://colab.research.google.com/" rel="nofollow">Colaboratory</a> oder <a href="https://studiolab.sagemaker.aws/" rel="nofollow">SageMaker StudioLab</a> kostenlosen Zugang zu einem Cloud-GPU, wenn Sie noch keinen haben.';return{c(){p=f("p"),p.innerHTML=j},l(m){p=c(m,"P",{"data-svelte-h":!0}),T(p)!=="svelte-j726fx"&&(p.innerHTML=j)},m(m,k){s(m,p,k)},p:Oe,d(m){m&&t(p)}}}function wt(he){let p,j,m,k="<code>Trainer</code> kümmert sich um die Trainingsschleife und ermöglicht die Feinabstimmung eines Modells in einer einzigen Codezeile. Für Benutzer, die es vorziehen, ihre eigene Trainingsschleife zu schreiben, können Sie auch eine Feinabstimmung eines 🤗 Transformers-Modells in nativem PyTorch vornehmen.",J,le,x="An diesem Punkt müssen Sie möglicherweise Ihr Notebook neu starten oder den folgenden Code ausführen, um etwas Speicher freizugeben:",ie,E,re,S,A="Als Nächstes müssen Sie den Datensatz <code>tokenized_dataset</code> manuell nachbearbeiten, um ihn für das Training vorzubereiten.",fe,F,v,ce,H="Entfernen Sie die Spalte “Text”, da das Modell keinen Rohtext als Eingabe akzeptiert:",ge,X,B,ne,Me,Y="Benennen Sie die Spalte “Label” in “Labels” um, da das Modell erwartet, dass das Argument “Labels” genannt wird:",se,R,je,Z,D,pe="Stellen Sie das Format des Datensatzes so ein, dass PyTorch-Tensoren anstelle von Listen zurückgegeben werden:",L,P,U,be,me="Erstellen Sie dann eine kleinere Teilmenge des Datensatzes, wie zuvor gezeigt, um die Feinabstimmung zu beschleunigen:",N,K,I,we,ae,C,$e="Erstellen Sie einen <code>DataLoader</code> für Ihre Trainings- und Testdatensätze, damit Sie über die Datenstapel iterieren können:",O,_,ye,de,V="Laden Sie Ihr Modell mit der Anzahl der erwarteten Kennzeichnungen:",ee,W,oe,Q,te,z,ue='Erstellen Sie einen Optimierer und einen Scheduler für die Lernrate, um das Modell fein abzustimmen. Wir verwenden den Optimierer <a href="https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html" rel="nofollow"><code>AdamW</code></a> aus PyTorch:',a,u,q,Je,ve="Erstellen Sie den Standard-Lernratenplaner aus <code>Trainer</code>:",ze,Te,l,h,Ce="Geben Sie schließlich <code>device</code> an, um einen Grafikprozessor zu verwenden, wenn Sie Zugang zu einem solchen haben. Andernfalls kann das Training auf einer CPU mehrere Stunden statt ein paar Minuten dauern.",_e,Ze,n,d,We,Ge,nt="Großartig, Sie sind bereit für das Training! 🥳",Ae,Re,He,Se,st='Um Ihren Trainingsfortschritt zu verfolgen, verwenden Sie die <a href="https://tqdm.github.io/" rel="nofollow">tqdm</a> Bibliothek, um einen Fortschrittsbalken über die Anzahl der Trainingsschritte hinzuzufügen:',Ye,Fe,Le,Xe,Ne,Be,at="Genauso wie Sie eine Bewertungsfunktion zu <code>Trainer</code> hinzugefügt haben, müssen Sie dasselbe tun, wenn Sie Ihre eigene Trainingsschleife schreiben. Aber anstatt die Metrik am Ende jeder Epoche zu berechnen und zu melden, werden Sie dieses Mal alle Stapel mit <code>add_batch</code> akkumulieren und die Metrik ganz am Ende berechnen.",Qe,Ve,qe;return p=new Ke({props:{id:"Dh9CL8fyG80"}}),E=new G({props:{code:"ZGVsJTIwbW9kZWwlMEFkZWwlMjBweXRvcmNoX21vZGVsJTBBZGVsJTIwdHJhaW5lciUwQXRvcmNoLmN1ZGEuZW1wdHlfY2FjaGUoKQ==",highlighted:`<span class="hljs-keyword">del</span> model
<span class="hljs-keyword">del</span> pytorch_model
<span class="hljs-keyword">del</span> trainer
torch.cuda.empty_cache()`,wrap:!1}}),X=new G({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLnJlbW92ZV9jb2x1bW5zKCU1QiUyMnRleHQlMjIlNUQp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = tokenized_datasets.remove_columns([<span class="hljs-string">&quot;text&quot;</span>])',wrap:!1}}),R=new G({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLnJlbmFtZV9jb2x1bW4oJTIybGFiZWwlMjIlMkMlMjAlMjJsYWJlbHMlMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = tokenized_datasets.rename_column(<span class="hljs-string">&quot;label&quot;</span>, <span class="hljs-string">&quot;labels&quot;</span>)',wrap:!1}}),P=new G({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzLnNldF9mb3JtYXQoJTIydG9yY2glMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets.set_format(<span class="hljs-string">&quot;torch&quot;</span>)',wrap:!1}}),K=new G({props:{code:"c21hbGxfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoc2VlZCUzRDQyKS5zZWxlY3QocmFuZ2UoMTAwMCkpJTBBc21hbGxfZXZhbF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydGVzdCUyMiU1RC5zaHVmZmxlKHNlZWQlM0Q0Mikuc2VsZWN0KHJhbmdlKDEwMDApKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>small_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>small_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;test&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))`,wrap:!1}}),we=new ke({props:{title:"DataLoader",local:"dataloader",headingTag:"h3"}}),_=new G({props:{code:"ZnJvbSUyMHRvcmNoLnV0aWxzLmRhdGElMjBpbXBvcnQlMjBEYXRhTG9hZGVyJTBBJTBBdHJhaW5fZGF0YWxvYWRlciUyMCUzRCUyMERhdGFMb2FkZXIoc21hbGxfdHJhaW5fZGF0YXNldCUyQyUyMHNodWZmbGUlM0RUcnVlJTJDJTIwYmF0Y2hfc2l6ZSUzRDgpJTBBZXZhbF9kYXRhbG9hZGVyJTIwJTNEJTIwRGF0YUxvYWRlcihzbWFsbF9ldmFsX2RhdGFzZXQlMkMlMjBiYXRjaF9zaXplJTNEOCk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> torch.utils.data <span class="hljs-keyword">import</span> DataLoader

<span class="hljs-meta">&gt;&gt;&gt; </span>train_dataloader = DataLoader(small_train_dataset, shuffle=<span class="hljs-literal">True</span>, batch_size=<span class="hljs-number">8</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>eval_dataloader = DataLoader(small_eval_dataset, batch_size=<span class="hljs-number">8</span>)`,wrap:!1}}),W=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiUyQyUyMG51bV9sYWJlbHMlM0Q1KQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>, num_labels=<span class="hljs-number">5</span>)`,wrap:!1}}),Q=new ke({props:{title:"Optimierer und Lernratensteuerung",local:"optimierer-und-lernratensteuerung",headingTag:"h3"}}),u=new G({props:{code:"ZnJvbSUyMHRvcmNoLm9wdGltJTIwaW1wb3J0JTIwQWRhbVclMEElMEFvcHRpbWl6ZXIlMjAlM0QlMjBBZGFtVyhtb2RlbC5wYXJhbWV0ZXJzKCklMkMlMjBsciUzRDVlLTUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> torch.optim <span class="hljs-keyword">import</span> AdamW

<span class="hljs-meta">&gt;&gt;&gt; </span>optimizer = AdamW(model.parameters(), lr=<span class="hljs-number">5e-5</span>)`,wrap:!1}}),Te=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMGdldF9zY2hlZHVsZXIlMEElMEFudW1fZXBvY2hzJTIwJTNEJTIwMyUwQW51bV90cmFpbmluZ19zdGVwcyUyMCUzRCUyMG51bV9lcG9jaHMlMjAqJTIwbGVuKHRyYWluX2RhdGFsb2FkZXIpJTBBbHJfc2NoZWR1bGVyJTIwJTNEJTIwZ2V0X3NjaGVkdWxlciglMEElMjAlMjAlMjAlMjBuYW1lJTNEJTIybGluZWFyJTIyJTJDJTIwb3B0aW1pemVyJTNEb3B0aW1pemVyJTJDJTIwbnVtX3dhcm11cF9zdGVwcyUzRDAlMkMlMjBudW1fdHJhaW5pbmdfc3RlcHMlM0RudW1fdHJhaW5pbmdfc3RlcHMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> get_scheduler

<span class="hljs-meta">&gt;&gt;&gt; </span>num_epochs = <span class="hljs-number">3</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>num_training_steps = num_epochs * <span class="hljs-built_in">len</span>(train_dataloader)
<span class="hljs-meta">&gt;&gt;&gt; </span>lr_scheduler = get_scheduler(
<span class="hljs-meta">... </span>    name=<span class="hljs-string">&quot;linear&quot;</span>, optimizer=optimizer, num_warmup_steps=<span class="hljs-number">0</span>, num_training_steps=num_training_steps
<span class="hljs-meta">... </span>)`,wrap:!1}}),Ze=new G({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFkZXZpY2UlMjAlM0QlMjB0b3JjaC5kZXZpY2UoJTIyY3VkYSUyMiklMjBpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklMjBlbHNlJTIwdG9yY2guZGV2aWNlKCUyMmNwdSUyMiklMEFtb2RlbC50byhkZXZpY2Up",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span>device = torch.device(<span class="hljs-string">&quot;cuda&quot;</span>) <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> torch.device(<span class="hljs-string">&quot;cpu&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model.to(device)`,wrap:!1}}),d=new et({props:{$$slots:{default:[bt]},$$scope:{ctx:he}}}),Re=new ke({props:{title:"Trainingsschleife",local:"trainingsschleife",headingTag:"h3"}}),Fe=new G({props:{code:"ZnJvbSUyMHRxZG0uYXV0byUyMGltcG9ydCUyMHRxZG0lMEElMEFwcm9ncmVzc19iYXIlMjAlM0QlMjB0cWRtKHJhbmdlKG51bV90cmFpbmluZ19zdGVwcykpJTBBJTBBbW9kZWwudHJhaW4oKSUwQWZvciUyMGVwb2NoJTIwaW4lMjByYW5nZShudW1fZXBvY2hzKSUzQSUwQSUyMCUyMCUyMCUyMGZvciUyMGJhdGNoJTIwaW4lMjB0cmFpbl9kYXRhbG9hZGVyJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9zcy5iYWNrd2FyZCgpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3B0aW1pemVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxyX3NjaGVkdWxlci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuemVyb19ncmFkKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIudXBkYXRlKDEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> tqdm.auto <span class="hljs-keyword">import</span> tqdm

<span class="hljs-meta">&gt;&gt;&gt; </span>progress_bar = tqdm(<span class="hljs-built_in">range</span>(num_training_steps))

<span class="hljs-meta">&gt;&gt;&gt; </span>model.train()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> epoch <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_epochs):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_dataloader:
<span class="hljs-meta">... </span>        batch = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()}
<span class="hljs-meta">... </span>        outputs = model(**batch)
<span class="hljs-meta">... </span>        loss = outputs.loss
<span class="hljs-meta">... </span>        loss.backward()

<span class="hljs-meta">... </span>        optimizer.step()
<span class="hljs-meta">... </span>        lr_scheduler.step()
<span class="hljs-meta">... </span>        optimizer.zero_grad()
<span class="hljs-meta">... </span>        progress_bar.update(<span class="hljs-number">1</span>)`,wrap:!1}}),Xe=new ke({props:{title:"Auswertung",local:"auswertung",headingTag:"h3"}}),Ve=new G({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKSUwQW1vZGVsLmV2YWwoKSUwQWZvciUyMGJhdGNoJTIwaW4lMjBldmFsX2RhdGFsb2FkZXIlM0ElMEElMjAlMjAlMjAlMjBiYXRjaCUyMCUzRCUyMCU3QmslM0ElMjB2LnRvKGRldmljZSklMjBmb3IlMjBrJTJDJTIwdiUyMGluJTIwYmF0Y2guaXRlbXMoKSU3RCUwQSUyMCUyMCUyMCUyMHdpdGglMjB0b3JjaC5ub19ncmFkKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMEElMjAlMjAlMjAlMjBsb2dpdHMlMjAlM0QlMjBvdXRwdXRzLmxvZ2l0cyUwQSUyMCUyMCUyMCUyMHByZWRpY3Rpb25zJTIwJTNEJTIwdG9yY2guYXJnbWF4KGxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQSUyMCUyMCUyMCUyMG1ldHJpYy5hZGRfYmF0Y2gocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyUyQyUyMHJlZmVyZW5jZXMlM0RiYXRjaCU1QiUyMmxhYmVscyUyMiU1RCklMEElMEFtZXRyaWMuY29tcHV0ZSgp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model.<span class="hljs-built_in">eval</span>()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> eval_dataloader:
<span class="hljs-meta">... </span>    batch = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()}
<span class="hljs-meta">... </span>    <span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span>        outputs = model(**batch)

<span class="hljs-meta">... </span>    logits = outputs.logits
<span class="hljs-meta">... </span>    predictions = torch.argmax(logits, dim=-<span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    metric.add_batch(predictions=predictions, references=batch[<span class="hljs-string">&quot;labels&quot;</span>])

<span class="hljs-meta">&gt;&gt;&gt; </span>metric.compute()`,wrap:!1}}),{c(){g(p.$$.fragment),j=i(),m=f("p"),m.innerHTML=k,J=i(),le=f("p"),le.textContent=x,ie=i(),g(E.$$.fragment),re=i(),S=f("p"),S.innerHTML=A,fe=i(),F=f("ol"),v=f("li"),ce=f("p"),ce.textContent=H,ge=i(),g(X.$$.fragment),B=i(),ne=f("li"),Me=f("p"),Me.textContent=Y,se=i(),g(R.$$.fragment),je=i(),Z=f("li"),D=f("p"),D.textContent=pe,L=i(),g(P.$$.fragment),U=i(),be=f("p"),be.textContent=me,N=i(),g(K.$$.fragment),I=i(),g(we.$$.fragment),ae=i(),C=f("p"),C.innerHTML=$e,O=i(),g(_.$$.fragment),ye=i(),de=f("p"),de.textContent=V,ee=i(),g(W.$$.fragment),oe=i(),g(Q.$$.fragment),te=i(),z=f("p"),z.innerHTML=ue,a=i(),g(u.$$.fragment),q=i(),Je=f("p"),Je.innerHTML=ve,ze=i(),g(Te.$$.fragment),l=i(),h=f("p"),h.innerHTML=Ce,_e=i(),g(Ze.$$.fragment),n=i(),g(d.$$.fragment),We=i(),Ge=f("p"),Ge.textContent=nt,Ae=i(),g(Re.$$.fragment),He=i(),Se=f("p"),Se.innerHTML=st,Ye=i(),g(Fe.$$.fragment),Le=i(),g(Xe.$$.fragment),Ne=i(),Be=f("p"),Be.innerHTML=at,Qe=i(),g(Ve.$$.fragment)},l(e){M(p.$$.fragment,e),j=r(e),m=c(e,"P",{"data-svelte-h":!0}),T(m)!=="svelte-1p8p1qh"&&(m.innerHTML=k),J=r(e),le=c(e,"P",{"data-svelte-h":!0}),T(le)!=="svelte-137vhdb"&&(le.textContent=x),ie=r(e),M(E.$$.fragment,e),re=r(e),S=c(e,"P",{"data-svelte-h":!0}),T(S)!=="svelte-s91cav"&&(S.innerHTML=A),fe=r(e),F=c(e,"OL",{});var o=Ie(F);v=c(o,"LI",{});var xe=Ie(v);ce=c(xe,"P",{"data-svelte-h":!0}),T(ce)!=="svelte-1at6qet"&&(ce.textContent=H),ge=r(xe),M(X.$$.fragment,xe),xe.forEach(t),B=r(o),ne=c(o,"LI",{});var De=Ie(ne);Me=c(De,"P",{"data-svelte-h":!0}),T(Me)!=="svelte-1vkhx3a"&&(Me.textContent=Y),se=r(De),M(R.$$.fragment,De),De.forEach(t),je=r(o),Z=c(o,"LI",{});var Pe=Ie(Z);D=c(Pe,"P",{"data-svelte-h":!0}),T(D)!=="svelte-vhptdl"&&(D.textContent=pe),L=r(Pe),M(P.$$.fragment,Pe),Pe.forEach(t),o.forEach(t),U=r(e),be=c(e,"P",{"data-svelte-h":!0}),T(be)!=="svelte-zygmh2"&&(be.textContent=me),N=r(e),M(K.$$.fragment,e),I=r(e),M(we.$$.fragment,e),ae=r(e),C=c(e,"P",{"data-svelte-h":!0}),T(C)!=="svelte-qx76uc"&&(C.innerHTML=$e),O=r(e),M(_.$$.fragment,e),ye=r(e),de=c(e,"P",{"data-svelte-h":!0}),T(de)!=="svelte-n8kcx6"&&(de.textContent=V),ee=r(e),M(W.$$.fragment,e),oe=r(e),M(Q.$$.fragment,e),te=r(e),z=c(e,"P",{"data-svelte-h":!0}),T(z)!=="svelte-1qi90rs"&&(z.innerHTML=ue),a=r(e),M(u.$$.fragment,e),q=r(e),Je=c(e,"P",{"data-svelte-h":!0}),T(Je)!=="svelte-1hp60cw"&&(Je.innerHTML=ve),ze=r(e),M(Te.$$.fragment,e),l=r(e),h=c(e,"P",{"data-svelte-h":!0}),T(h)!=="svelte-1xz2joh"&&(h.innerHTML=Ce),_e=r(e),M(Ze.$$.fragment,e),n=r(e),M(d.$$.fragment,e),We=r(e),Ge=c(e,"P",{"data-svelte-h":!0}),T(Ge)!=="svelte-ug84k0"&&(Ge.textContent=nt),Ae=r(e),M(Re.$$.fragment,e),He=r(e),Se=c(e,"P",{"data-svelte-h":!0}),T(Se)!=="svelte-wgwwth"&&(Se.innerHTML=st),Ye=r(e),M(Fe.$$.fragment,e),Le=r(e),M(Xe.$$.fragment,e),Ne=r(e),Be=c(e,"P",{"data-svelte-h":!0}),T(Be)!=="svelte-cghih7"&&(Be.innerHTML=at),Qe=r(e),M(Ve.$$.fragment,e)},m(e,o){b(p,e,o),s(e,j,o),s(e,m,o),s(e,J,o),s(e,le,o),s(e,ie,o),b(E,e,o),s(e,re,o),s(e,S,o),s(e,fe,o),s(e,F,o),Ue(F,v),Ue(v,ce),Ue(v,ge),b(X,v,null),Ue(F,B),Ue(F,ne),Ue(ne,Me),Ue(ne,se),b(R,ne,null),Ue(F,je),Ue(F,Z),Ue(Z,D),Ue(Z,L),b(P,Z,null),s(e,U,o),s(e,be,o),s(e,N,o),b(K,e,o),s(e,I,o),b(we,e,o),s(e,ae,o),s(e,C,o),s(e,O,o),b(_,e,o),s(e,ye,o),s(e,de,o),s(e,ee,o),b(W,e,o),s(e,oe,o),b(Q,e,o),s(e,te,o),s(e,z,o),s(e,a,o),b(u,e,o),s(e,q,o),s(e,Je,o),s(e,ze,o),b(Te,e,o),s(e,l,o),s(e,h,o),s(e,_e,o),b(Ze,e,o),s(e,n,o),b(d,e,o),s(e,We,o),s(e,Ge,o),s(e,Ae,o),b(Re,e,o),s(e,He,o),s(e,Se,o),s(e,Ye,o),b(Fe,e,o),s(e,Le,o),b(Xe,e,o),s(e,Ne,o),s(e,Be,o),s(e,Qe,o),b(Ve,e,o),qe=!0},p(e,o){const xe={};o&2&&(xe.$$scope={dirty:o,ctx:e}),d.$set(xe)},i(e){qe||(w(p.$$.fragment,e),w(E.$$.fragment,e),w(X.$$.fragment,e),w(R.$$.fragment,e),w(P.$$.fragment,e),w(K.$$.fragment,e),w(we.$$.fragment,e),w(_.$$.fragment,e),w(W.$$.fragment,e),w(Q.$$.fragment,e),w(u.$$.fragment,e),w(Te.$$.fragment,e),w(Ze.$$.fragment,e),w(d.$$.fragment,e),w(Re.$$.fragment,e),w(Fe.$$.fragment,e),w(Xe.$$.fragment,e),w(Ve.$$.fragment,e),qe=!0)},o(e){$(p.$$.fragment,e),$(E.$$.fragment,e),$(X.$$.fragment,e),$(R.$$.fragment,e),$(P.$$.fragment,e),$(K.$$.fragment,e),$(we.$$.fragment,e),$(_.$$.fragment,e),$(W.$$.fragment,e),$(Q.$$.fragment,e),$(u.$$.fragment,e),$(Te.$$.fragment,e),$(Ze.$$.fragment,e),$(d.$$.fragment,e),$(Re.$$.fragment,e),$(Fe.$$.fragment,e),$(Xe.$$.fragment,e),$(Ve.$$.fragment,e),qe=!1},d(e){e&&(t(j),t(m),t(J),t(le),t(ie),t(re),t(S),t(fe),t(F),t(U),t(be),t(N),t(I),t(ae),t(C),t(O),t(ye),t(de),t(ee),t(oe),t(te),t(z),t(a),t(q),t(Je),t(ze),t(l),t(h),t(_e),t(n),t(We),t(Ge),t(Ae),t(He),t(Se),t(Ye),t(Le),t(Ne),t(Be),t(Qe)),y(p,e),y(E,e),y(X),y(R),y(P),y(K,e),y(we,e),y(_,e),y(W,e),y(Q,e),y(u,e),y(Te,e),y(Ze,e),y(d,e),y(Re,e),y(Fe,e),y(Xe,e),y(Ve,e)}}}function $t(he){let p,j;return p=new tt({props:{$$slots:{default:[wt]},$$scope:{ctx:he}}}),{c(){g(p.$$.fragment)},l(m){M(p.$$.fragment,m)},m(m,k){b(p,m,k),j=!0},p(m,k){const J={};k&2&&(J.$$scope={dirty:k,ctx:m}),p.$set(J)},i(m){j||(w(p.$$.fragment,m),j=!0)},o(m){$(p.$$.fragment,m),j=!1},d(m){y(p,m)}}}function yt(he){let p,j,m,k,J,le,x,ie,E,re="Die Verwendung eines vorab trainierten Modells hat erhebliche Vorteile. Es reduziert die Rechenkosten und den CO2-Fußabdruck und ermöglicht Ihnen die Verwendung von Modellen, die dem neuesten Stand der Technik entsprechen, ohne dass Sie ein Modell von Grund auf neu trainieren müssen. Transformers bietet Zugang zu Tausenden von vortrainierten Modellen für eine Vielzahl von Aufgaben. Wenn Sie ein vorab trainiertes Modell verwenden, trainieren Sie es auf einem für Ihre Aufgabe spezifischen Datensatz. Dies wird als Feinabstimmung bezeichnet und ist eine unglaublich leistungsfähige Trainingstechnik. In diesem Tutorial werden Sie ein vortrainiertes Modell mit einem Deep-Learning-Framework Ihrer Wahl feinabstimmen:",S,A,fe="<li>Feinabstimmung eines vorab trainierten Modells mit 🤗 Transformers <code>Trainer</code>.</li> <li>Feinabstimmung eines vorab trainierten Modells in TensorFlow mit Keras.</li> <li>Feinabstimmung eines vorab trainierten Modells in nativem PyTorch.</li>",F,v,ce,H,ge,X,B,ne,Me="Bevor Sie die Feinabstimmung eines vortrainierten Modells vornehmen können, müssen Sie einen Datensatz herunterladen und für das Training vorbereiten. Im vorangegangenen Leitfaden haben Sie gelernt, wie man Daten für das Training aufbereitet, und jetzt haben Sie die Gelegenheit, diese Fähigkeiten zu testen!",Y,se,R='Laden Sie zunächst den Datensatz <a href="https://huggingface.co/datasets/yelp_review_full" rel="nofollow">Yelp Reviews</a>:',je,Z,D,pe,L='Wie Sie nun wissen, benötigen Sie einen Tokenizer, um den Text zu verarbeiten und eine Auffüll- und Abschneidungsstrategie einzubauen, um mit variablen Sequenzlängen umzugehen. Um Ihren Datensatz in einem Schritt zu verarbeiten, verwenden Sie die 🤗 Methode Datasets <a href="https://huggingface.co/docs/datasets/process#map" rel="nofollow"><code>map</code></a>, um eine Vorverarbeitungsfunktion auf den gesamten Datensatz anzuwenden:',P,U,be,me,N="Wenn Sie möchten, können Sie eine kleinere Teilmenge des gesamten Datensatzes für die Feinabstimmung erstellen, um den Zeitaufwand zu verringern:",K,I,we,ae,C,$e,O,_,ye=`An dieser Stelle sollten Sie dem Abschnitt folgen, der dem Rahmen entspricht, den Sie verwenden möchten. Sie können über die Links
in der rechten Seitenleiste können Sie zu dem gewünschten Abschnitt springen - und wenn Sie den gesamten Inhalt eines bestimmten Frameworks ausblenden möchten,
klicken Sie einfach auf die Schaltfläche oben rechts im Block des jeweiligen Frameworks!`,de,V,ee,W,oe,Q,te,z,ue,a,u,q,Je,ve,ze="Weitere Beispiele für die Feinabstimmung finden Sie unter:",Te,l,h=`<li><p><a href="https://github.com/huggingface/transformers/tree/main/examples" rel="nofollow">🤗 Transformers Examples</a> enthält Skripte
um gängige NLP-Aufgaben in PyTorch und TensorFlow zu trainieren.</p></li> <li><p><a href="notebooks">🤗 Transformers Notebooks</a> enthält verschiedene Notebooks zur Feinabstimmung eines Modells für bestimmte Aufgaben in PyTorch und TensorFlow.</p></li>`,Ce,_e,Ze;return J=new ke({props:{title:"Optimierung eines vortrainierten Modells",local:"optimierung-eines-vortrainierten-modells",headingTag:"h1"}}),x=new ot({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/training.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/pytorch/training.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/tensorflow/training.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/training.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/pytorch/training.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/tensorflow/training.ipynb"}]}}),H=new ke({props:{title:"Vorbereitung eines Datensatzes",local:"vorbereitung-eines-datensatzes",headingTag:"h2"}}),X=new Ke({props:{id:"_BZearw7f0w"}}),Z=new G({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJ5ZWxwX3Jldmlld19mdWxsJTIyKSUwQWRhdGFzZXQlNUIlMjJ0cmFpbiUyMiU1RCU1QjEwMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = load_dataset(<span class="hljs-string">&quot;yelp_review_full&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>dataset[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">100</span>]
{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-number">0</span>,
 <span class="hljs-string">&#x27;text&#x27;</span>: <span class="hljs-string">&#x27;My expectations for McDonalds are t rarely high. But for one to still fail so spectacularly...that takes something special!\\\\nThe cashier took my friends\\&#x27;s order, then promptly ignored me. I had to force myself in front of a cashier who opened his register to wait on the person BEHIND me. I waited over five minutes for a gigantic order that included precisely one kid\\&#x27;s meal. After watching two people who ordered after me be handed their food, I asked where mine was. The manager started yelling at the cashiers for \\\\&quot;serving off their orders\\\\&quot; when they didn\\&#x27;t have their food. But neither cashier was anywhere near those controls, and the manager was the one serving food to customers and clearing the boards.\\\\nThe manager was rude when giving me my order. She didn\\&#x27;t make sure that I had everything ON MY RECEIPT, and never even had the decency to apologize that I felt I was getting poor service.\\\\nI\\&#x27;ve eaten at various McDonalds restaurants for over 30 years. I\\&#x27;ve worked at more than one location. I expect bad days, bad moods, and the occasional mistake. But I have yet to have a decent experience at this store. It will remain a place I avoid unless someone in my party needs to avoid illness from low blood sugar. Perhaps I should go back to the racially biased service of Steak n Shake instead!&#x27;</span>}`,wrap:!1}}),U=new G({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBJTBBJTBBZGVmJTIwdG9rZW5pemVfZnVuY3Rpb24oZXhhbXBsZXMpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9rZW5pemVyKGV4YW1wbGVzJTVCJTIydGV4dCUyMiU1RCUyQyUyMHBhZGRpbmclM0QlMjJtYXhfbGVuZ3RoJTIyJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTBBJTBBdG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwZGF0YXNldC5tYXAodG9rZW5pemVfZnVuY3Rpb24lMkMlMjBiYXRjaGVkJTNEVHJ1ZSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">examples</span>):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> tokenizer(examples[<span class="hljs-string">&quot;text&quot;</span>], padding=<span class="hljs-string">&quot;max_length&quot;</span>, truncation=<span class="hljs-literal">True</span>)


<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_datasets = dataset.<span class="hljs-built_in">map</span>(tokenize_function, batched=<span class="hljs-literal">True</span>)`,wrap:!1}}),I=new G({props:{code:"c21hbGxfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoc2VlZCUzRDQyKS5zZWxlY3QocmFuZ2UoMTAwMCkpJTBBc21hbGxfZXZhbF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydGVzdCUyMiU1RC5zaHVmZmxlKHNlZWQlM0Q0Mikuc2VsZWN0KHJhbmdlKDEwMDApKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>small_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>small_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;test&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))`,wrap:!1}}),$e=new ke({props:{title:"Training",local:"training",headingTag:"h2"}}),V=new lt({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[Mt],pytorch:[ft]},$$scope:{ctx:he}}}),Q=new ke({props:{title:"Trainieren in nativem PyTorch",local:"trainieren-in-nativem-pytorch",headingTag:"h2"}}),z=new lt({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[$t]},$$scope:{ctx:he}}}),q=new ke({props:{title:"Zusätzliche Ressourcen",local:"zusätzliche-ressourcen",headingTag:"h2"}}),{c(){p=f("meta"),j=i(),m=f("p"),k=i(),g(J.$$.fragment),le=i(),g(x.$$.fragment),ie=i(),E=f("p"),E.textContent=re,S=i(),A=f("ul"),A.innerHTML=fe,F=i(),v=f("a"),ce=i(),g(H.$$.fragment),ge=i(),g(X.$$.fragment),B=i(),ne=f("p"),ne.textContent=Me,Y=i(),se=f("p"),se.innerHTML=R,je=i(),g(Z.$$.fragment),D=i(),pe=f("p"),pe.innerHTML=L,P=i(),g(U.$$.fragment),be=i(),me=f("p"),me.textContent=N,K=i(),g(I.$$.fragment),we=i(),ae=f("a"),C=i(),g($e.$$.fragment),O=i(),_=f("p"),_.textContent=ye,de=i(),g(V.$$.fragment),ee=i(),W=f("a"),oe=i(),g(Q.$$.fragment),te=i(),g(z.$$.fragment),ue=i(),a=f("a"),u=i(),g(q.$$.fragment),Je=i(),ve=f("p"),ve.textContent=ze,Te=i(),l=f("ul"),l.innerHTML=h,Ce=i(),_e=f("p"),this.h()},l(n){const d=dt("svelte-u9bgzb",document.head);p=c(d,"META",{name:!0,content:!0}),d.forEach(t),j=r(n),m=c(n,"P",{}),Ie(m).forEach(t),k=r(n),M(J.$$.fragment,n),le=r(n),M(x.$$.fragment,n),ie=r(n),E=c(n,"P",{"data-svelte-h":!0}),T(E)!=="svelte-46px7v"&&(E.textContent=re),S=r(n),A=c(n,"UL",{"data-svelte-h":!0}),T(A)!=="svelte-cokzju"&&(A.innerHTML=fe),F=r(n),v=c(n,"A",{id:!0}),Ie(v).forEach(t),ce=r(n),M(H.$$.fragment,n),ge=r(n),M(X.$$.fragment,n),B=r(n),ne=c(n,"P",{"data-svelte-h":!0}),T(ne)!=="svelte-1kkyfva"&&(ne.textContent=Me),Y=r(n),se=c(n,"P",{"data-svelte-h":!0}),T(se)!=="svelte-3hvgts"&&(se.innerHTML=R),je=r(n),M(Z.$$.fragment,n),D=r(n),pe=c(n,"P",{"data-svelte-h":!0}),T(pe)!=="svelte-12zcv4y"&&(pe.innerHTML=L),P=r(n),M(U.$$.fragment,n),be=r(n),me=c(n,"P",{"data-svelte-h":!0}),T(me)!=="svelte-1dfxks2"&&(me.textContent=N),K=r(n),M(I.$$.fragment,n),we=r(n),ae=c(n,"A",{id:!0}),Ie(ae).forEach(t),C=r(n),M($e.$$.fragment,n),O=r(n),_=c(n,"P",{"data-svelte-h":!0}),T(_)!=="svelte-yu7n3b"&&(_.textContent=ye),de=r(n),M(V.$$.fragment,n),ee=r(n),W=c(n,"A",{id:!0}),Ie(W).forEach(t),oe=r(n),M(Q.$$.fragment,n),te=r(n),M(z.$$.fragment,n),ue=r(n),a=c(n,"A",{id:!0}),Ie(a).forEach(t),u=r(n),M(q.$$.fragment,n),Je=r(n),ve=c(n,"P",{"data-svelte-h":!0}),T(ve)!=="svelte-itd6v5"&&(ve.textContent=ze),Te=r(n),l=c(n,"UL",{"data-svelte-h":!0}),T(l)!=="svelte-xl1tq6"&&(l.innerHTML=h),Ce=r(n),_e=c(n,"P",{}),Ie(_e).forEach(t),this.h()},h(){Ee(p,"name","hf:doc:metadata"),Ee(p,"content",Tt),Ee(v,"id","data-processing"),Ee(ae,"id","trainer"),Ee(W,"id","pytorch_native"),Ee(a,"id","additional-resources")},m(n,d){Ue(document.head,p),s(n,j,d),s(n,m,d),s(n,k,d),b(J,n,d),s(n,le,d),b(x,n,d),s(n,ie,d),s(n,E,d),s(n,S,d),s(n,A,d),s(n,F,d),s(n,v,d),s(n,ce,d),b(H,n,d),s(n,ge,d),b(X,n,d),s(n,B,d),s(n,ne,d),s(n,Y,d),s(n,se,d),s(n,je,d),b(Z,n,d),s(n,D,d),s(n,pe,d),s(n,P,d),b(U,n,d),s(n,be,d),s(n,me,d),s(n,K,d),b(I,n,d),s(n,we,d),s(n,ae,d),s(n,C,d),b($e,n,d),s(n,O,d),s(n,_,d),s(n,de,d),b(V,n,d),s(n,ee,d),s(n,W,d),s(n,oe,d),b(Q,n,d),s(n,te,d),b(z,n,d),s(n,ue,d),s(n,a,d),s(n,u,d),b(q,n,d),s(n,Je,d),s(n,ve,d),s(n,Te,d),s(n,l,d),s(n,Ce,d),s(n,_e,d),Ze=!0},p(n,[d]){const We={};d&2&&(We.$$scope={dirty:d,ctx:n}),V.$set(We);const Ge={};d&2&&(Ge.$$scope={dirty:d,ctx:n}),z.$set(Ge)},i(n){Ze||(w(J.$$.fragment,n),w(x.$$.fragment,n),w(H.$$.fragment,n),w(X.$$.fragment,n),w(Z.$$.fragment,n),w(U.$$.fragment,n),w(I.$$.fragment,n),w($e.$$.fragment,n),w(V.$$.fragment,n),w(Q.$$.fragment,n),w(z.$$.fragment,n),w(q.$$.fragment,n),Ze=!0)},o(n){$(J.$$.fragment,n),$(x.$$.fragment,n),$(H.$$.fragment,n),$(X.$$.fragment,n),$(Z.$$.fragment,n),$(U.$$.fragment,n),$(I.$$.fragment,n),$($e.$$.fragment,n),$(V.$$.fragment,n),$(Q.$$.fragment,n),$(z.$$.fragment,n),$(q.$$.fragment,n),Ze=!1},d(n){n&&(t(j),t(m),t(k),t(le),t(ie),t(E),t(S),t(A),t(F),t(v),t(ce),t(ge),t(B),t(ne),t(Y),t(se),t(je),t(D),t(pe),t(P),t(be),t(me),t(K),t(we),t(ae),t(C),t(O),t(_),t(de),t(ee),t(W),t(oe),t(te),t(ue),t(a),t(u),t(Je),t(ve),t(Te),t(l),t(Ce),t(_e)),t(p),y(J,n),y(x,n),y(H,n),y(X,n),y(Z,n),y(U,n),y(I,n),y($e,n),y(V,n),y(Q,n),y(z,n),y(q,n)}}}const Tt='{"title":"Optimierung eines vortrainierten Modells","local":"optimierung-eines-vortrainierten-modells","sections":[{"title":"Vorbereitung eines Datensatzes","local":"vorbereitung-eines-datensatzes","sections":[],"depth":2},{"title":"Training","local":"training","sections":[],"depth":2},{"title":"Trainieren mit PyTorch Trainer","local":"trainieren-mit-pytorch-trainer","sections":[{"title":"Hyperparameter für das Training","local":"hyperparameter-für-das-training","sections":[],"depth":3},{"title":"Auswerten","local":"auswerten","sections":[],"depth":3},{"title":"Trainer","local":"trainer","sections":[],"depth":3}],"depth":2},{"title":"Trainieren Sie ein TensorFlow-Modell mit Keras","local":"trainieren-sie-ein-tensorflow-modell-mit-keras","sections":[{"title":"Laden von Daten für Keras","local":"laden-von-daten-für-keras","sections":[],"depth":3},{"title":"Laden von Daten als tf.data.Dataset","local":"laden-von-daten-als-tfdatadataset","sections":[],"depth":3}],"depth":2},{"title":"Trainieren in nativem PyTorch","local":"trainieren-in-nativem-pytorch","sections":[{"title":"DataLoader","local":"dataloader","sections":[],"depth":3},{"title":"Optimierer und Lernratensteuerung","local":"optimierer-und-lernratensteuerung","sections":[],"depth":3},{"title":"Trainingsschleife","local":"trainingsschleife","sections":[],"depth":3},{"title":"Auswertung","local":"auswertung","sections":[],"depth":3}],"depth":2},{"title":"Zusätzliche Ressourcen","local":"zusätzliche-ressourcen","sections":[],"depth":2}],"depth":1}';function jt(he){return rt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class _t extends pt{constructor(p){super(),mt(this,p,jt,yt,it,{})}}export{_t as component};
