import{s as se,o as te}from"../chunks/scheduler.37c15a92.js";import{S as ne,i as Je,g as V,s as a,r as o,A as ae,h as w,f as s,c as M,j as Pl,u as r,x as C,k as Ll,y as Me,a as n,v as c,t as p,b as Kl,d as i,w as u,p as le}from"../chunks/index.2bf4358c.js";import{C as Q}from"../chunks/CodeBlock.4e987730.js";import{C as ee}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{F as Ue}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Sl,E as pe}from"../chunks/getInferenceSnippets.1837c472.js";function ie(E){let J,U;return J=new ee({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section6_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section6_tf.ipynb"}]}}),{c(){o(J.$$.fragment)},l(t){r(J.$$.fragment,t)},m(t,m){c(J,t,m),U=!0},i(t){U||(i(J.$$.fragment,t),U=!0)},o(t){p(J.$$.fragment,t),U=!1},d(t){u(J,t)}}}function oe(E){let J,U;return J=new ee({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section6_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section6_pt.ipynb"}]}}),{c(){o(J.$$.fragment)},l(t){r(J.$$.fragment,t)},m(t,m){c(J,t,m),U=!0},i(t){U||(i(J.$$.fragment,t),U=!0)},o(t){p(J.$$.fragment,t),U=!1},d(t){u(J,t)}}}function re(E){let J,U;return J=new Q({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBc2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIpJTBBb3V0cHV0JTIwJTNEJTIwbW9kZWwoKip0b2tlbnMp",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

tokens = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
output = model(**tokens)`,wrap:!1}}),{c(){o(J.$$.fragment)},l(t){r(J.$$.fragment,t)},m(t,m){c(J,t,m),U=!0},i(t){U||(i(J.$$.fragment,t),U=!0)},o(t){p(J.$$.fragment,t),U=!1},d(t){u(J,t)}}}function ce(E){let J,U;return J=new Q({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEFzZXF1ZW5jZXMlMjAlM0QlMjAlNUIlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMkMlMjAlMjJTbyUyMGhhdmUlMjBJISUyMiU1RCUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEVHJ1ZSUyQyUyMHRydW5jYXRpb24lM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFvdXRwdXQlMjAlM0QlMjBtb2RlbCgqKnRva2Vucyk=",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

tokens = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
output = model(**tokens)`,wrap:!1}}),{c(){o(J.$$.fragment)},l(t){r(J.$$.fragment,t)},m(t,m){c(J,t,m),U=!0},i(t){U||(i(J.$$.fragment,t),U=!0)},o(t){p(J.$$.fragment,t),U=!1},d(t){u(J,t)}}}function ue(E){let J,U,t,m,I,tl,R,nl,y,T,ll,d,Zl="В последних нескольких разделах мы старались делать большую часть работы вручную. Мы изучили, как работают токенизаторы, рассмотрели токенизацию, преобразование во входные идентификаторы, дополнении, усечении и маски внимания.",Jl,f,Al="Однако, как мы видели в разделе 2, 🤗 Transformers API может обработать все это для нас с помощью высокоуровневой функции, которую мы рассмотрим здесь. Когда вы вызываете свой <code>tokenizer</code> непосредственно на предложении, вы получаете обратно входы, готовые к передаче в вашу модель:",al,h,Ml,D,$l="Здесь переменная <code>model_inputs</code> содержит все, что необходимо для нормальной работы модели. Для DistilBERT это идентификаторы входов, а также маска внимания. В других моделях, принимающих дополнительные входы, они также будут формироваться выходами объекта <code>tokenizer</code>.",Ul,g,Nl="Как мы увидим на нескольких примерах ниже, это очень мощный метод. Во-первых, он может токенизировать одну последовательность:",pl,k,il,S,Wl="Он также обрабатывает несколько последовательностей одновременно, без каких-либо изменений в API:",ol,Z,rl,A,xl="Он может быть дополнен исходя из нескольких целей:",cl,$,ul,N,_l="Он также может выполнять усечение последовательностей:",Vl,W,wl,x,Bl="Объект <code>tokenizer</code> может выполнять преобразование в тензоры конкретных фреймворков, которые затем могут быть напрямую переданы в модель. Например, в следующем примере кода мы задаем токенизатору возвращать тензоры для различных фреймворков - <code>&quot;pt&quot;</code> возвращает тензоры PyTorch, <code>&quot;tf&quot;</code> возвращает тензоры TensorFlow, а <code>&quot;np&quot;</code> возвращает массивы NumPy:",ml,_,Cl,B,Ql,X,Xl="Если мы посмотрим на идентификаторы входа, возвращаемые токенизатором, то увидим, что они немного отличаются от тех, что мы получали ранее:",El,G,yl,z,Tl,q,Gl="Один идентификатор токена был добавлен в начале, а другой - в конце. Давайте декодируем две последовательности идентификаторов, приведенные выше, чтобы понять, в чем дело:",bl,v,jl,Y,Il,F,zl="Токенизатор добавил специальное слово <code>[CLS]</code> в начале и специальное слово <code>[SEP]</code> в конце. Это связано с тем, что модель была предварительно обучена с ними, поэтому для получения тех же результатов при инференсе нам нужно добавить и их. Обратите внимание, что некоторые модели не добавляют специальные слова или добавляют другие слова; модели также могут добавлять эти специальные слова только в начале или только в конце. В любом случае, токенизатор знает, какие из них ожидаются, и справится с этим сам.",Rl,H,dl,O,ql="Теперь, когда мы рассмотрели все отдельные шаги, которые использует объект <code>tokenizer</code> при работе с текстами, давайте в последний раз посмотрим, как он может работать с множественными последовательностями (дополнение!), очень длинными последовательностями (усечение!) и несколькими типами тензоров с помощью своего основного API:",fl,b,j,el,P,hl,sl,Dl;I=new Ue({props:{fw:E[0]}}),R=new Sl({props:{title:"Собираем все воедино",local:"putting-it-all-together",headingTag:"h1"}});const vl=[oe,ie],L=[];function Yl(l,e){return l[0]==="pt"?0:1}y=Yl(E),T=L[y]=vl[y](E),h=new Q({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQSUwQXNlcXVlbmNlJTIwJTNEJTIwJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTBBJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>

model_inputs = tokenizer(sequence)`,wrap:!1}}),k=new Q({props:{code:"c2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2Up",highlighted:`sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>

model_inputs = tokenizer(sequence)`,wrap:!1}}),Z=new Q({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzKQ==",highlighted:`sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

model_inputs = tokenizer(sequences)`,wrap:!1}}),$=new Q({props:{code:"JTIzJTIwJUQwJTk0JUQwJUJFJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI1JUQwJUI5JTIwJUQwJUI0JUQwJUJFJTIwJUQwJUJDJUQwJUIwJUQwJUJBJUQxJTgxJUQwJUI4JUQwJUJDJUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUI0JUQwJUJCJUQwJUI4JUQwJUJEJUQxJThCJTIwJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0QlMjJsb25nZXN0JTIyKSUwQSUwQSUyMyUyMCVEMCU5NCVEMCVCRSVEMCVCRiVEMCVCRSVEMCVCQiVEMCVCRCVEMCVCNSVEMCVCRCVEMCVCOCVEMCVCNSUyMCVEMCVCRiVEMCVCRSVEMSU4MSVEMCVCQiVEMCVCNSVEMCVCNCVEMCVCRSVEMCVCMiVEMCVCMCVEMSU4MiVEMCVCNSVEMCVCQiVEMSU4QyVEMCVCRCVEMCVCRSVEMSU4MSVEMSU4MiVEMCVCNSVEMCVCOSUyMCVEMCVCNCVEMCVCRSUyMCVEMCVCQyVEMCVCMCVEMCVCQSVEMSU4MSVEMCVCOCVEMCVCQyVEMCVCMCVEMCVCQiVEMSU4QyVEMCVCRCVEMCVCRSVEMCVCOSUyMCVEMCVCNCVEMCVCQiVEMCVCOCVEMCVCRCVEMSU4QiUyMCVEMCVCQyVEMCVCRSVEMCVCNCVEMCVCNSVEMCVCQiVEMCVCOCUwQSUyMyUyMCg1MTIlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjBCRVJUJTIwJUQwJUI4JUQwJUJCJUQwJUI4JTIwRGlzdGlsQkVSVCklMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRCUyMm1heF9sZW5ndGglMjIpJTBBJTBBJTIzJTIwJUQwJTk0JUQwJUJFJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI1JUQwJUI5JTIwJUQwJUI0JUQwJUJFJTIwJUQwJUI3JUQwJUIwJUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUJDJUQwJUIwJUQwJUJBJUQxJTgxJUQwJUI4JUQwJUJDJUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUI0JUQwJUJCJUQwJUI4JUQwJUJEJUQxJThCJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0QlMjJtYXhfbGVuZ3RoJTIyJTJDJTIwbWF4X2xlbmd0aCUzRDgp",highlighted:`<span class="hljs-comment"># Дополнение последовательностей до максимальной длины последовательности</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-string">&quot;longest&quot;</span>)

<span class="hljs-comment"># Дополнение последовательностей до максимальной длины модели</span>
<span class="hljs-comment"># (512 для BERT или DistilBERT)</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-string">&quot;max_length&quot;</span>)

<span class="hljs-comment"># Дополнение последовательностей до заданной максимальной длины</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-string">&quot;max_length&quot;</span>, max_length=<span class="hljs-number">8</span>)`,wrap:!1}}),W=new Q({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEElMjMlMjAlRDAlQTMlRDElODElRDAlQjUlRDElODclRDAlQjUlRDAlQkQlRDAlQjglRDAlQjUlMjAlRDAlQkYlRDAlQkUlRDElODElRDAlQkIlRDAlQjUlRDAlQjQlRDAlQkUlRDAlQjIlRDAlQjAlRDElODIlRDAlQjUlRDAlQkIlRDElOEMlRDAlQkQlRDAlQkUlRDElODElRDElODIlRDAlQjUlRDAlQjklMkMlMjAlRDAlQjQlRDAlQkIlRDAlQjglRDAlQkQlRDAlQjAlMjAlRDAlQkElRDAlQkUlRDElODIlRDAlQkUlRDElODAlRDElOEIlRDElODUlMjAlRDAlQkYlRDElODAlRDAlQjUlRDAlQjIlRDElOEIlRDElODglRDAlQjAlRDAlQjUlRDElODIlMjAlRDAlQkMlRDAlQjAlRDAlQkElRDElODElRDAlQjglRDAlQkMlRDAlQjAlRDAlQkIlRDElOEMlRDAlQkQlRDElODMlRDElOEUlMjAlRDAlQjQlRDAlQkIlRDAlQjglRDAlQkQlRDElODMlMjAlRDAlQkMlRDAlQkUlRDAlQjQlRDAlQjUlRDAlQkIlRDAlQjglMEElMjMlMjAoNTEyJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwQkVSVCUyMCVEMCVCOCVEMCVCQiVEMCVCOCUyMERpc3RpbEJFUlQpJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHRydW5jYXRpb24lM0RUcnVlKSUwQSUwQSUyMyUyMCVEMCVBMyVEMSU4MSVEMCVCNSVEMSU4NyVEMCVCNSVEMCVCRCVEMCVCOCVEMCVCNSUyMCVEMCVCRiVEMCVCRSVEMSU4MSVEMCVCQiVEMCVCNSVEMCVCNCVEMCVCRSVEMCVCMiVEMCVCMCVEMSU4MiVEMCVCNSVEMCVCQiVEMSU4QyVEMCVCRCVEMCVCRSVEMSU4MSVEMSU4MiVEMCVCNSVEMCVCOSUyQyUyMCVEMCVCNCVEMCVCQiVEMCVCOCVEMCVCRCVEMCVCMCUyMCVEMCVCQSVEMCVCRSVEMSU4MiVEMCVCRSVEMSU4MCVEMSU4QiVEMSU4NSUyMCVEMCVCRiVEMSU4MCVEMCVCNSVEMCVCMiVEMSU4QiVEMSU4OCVEMCVCMCVEMCVCNSVEMSU4MiUyMCVEMCVCNyVEMCVCMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4MyVEMSU4RSUyMCVEMCVCQyVEMCVCMCVEMCVCQSVEMSU4MSVEMCVCOCVEMCVCQyVEMCVCMCVEMCVCQiVEMSU4QyVEMCVCRCVEMSU4MyVEMSU4RSUyMCVEMCVCNCVEMCVCQiVEMCVCOCVEMCVCRCVEMSU4MyUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBtYXhfbGVuZ3RoJTNEOCUyQyUyMHRydW5jYXRpb24lM0RUcnVlKQ==",highlighted:`sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

<span class="hljs-comment"># Усечение последовательностей, длина которых превышает максимальную длину модели</span>
<span class="hljs-comment"># (512 для BERT или DistilBERT)</span>
model_inputs = tokenizer(sequences, truncation=<span class="hljs-literal">True</span>)

<span class="hljs-comment"># Усечение последовательностей, длина которых превышает заданную максимальную длину</span>
model_inputs = tokenizer(sequences, max_length=<span class="hljs-number">8</span>, truncation=<span class="hljs-literal">True</span>)`,wrap:!1}}),_=new Q({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEElMjMlMjAlRDAlOTIlRDAlQjUlRDElODAlRDAlQkQlRDElODMlRDElODIlRDElOEMlMjAlRDElODIlRDAlQjUlRDAlQkQlRDAlQjclRDAlQkUlRDElODAlRDElOEIlMjBQeVRvcmNoJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEElMEElMjMlMjAlRDAlOTIlRDAlQjUlRDElODAlRDAlQkQlRDElODMlRDElODIlRDElOEMlMjAlRDElODIlRDAlQjUlRDAlQkQlRDAlQjclRDAlQkUlRDElODAlRDElOEIlMjBUZW5zb3JGbG93JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJ0ZiUyMiklMEElMEElMjMlMjAlRDAlOTIlRDAlQjUlRDElODAlRDAlQkQlRDElODMlRDElODIlRDElOEMlMjAlRDAlQkMlRDAlQjAlRDElODElRDElODElRDAlQjglRDAlQjIlRDElOEIlMjBOdW1QeSUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIybnAlMjIp",highlighted:`sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

<span class="hljs-comment"># Вернуть тензоры PyTorch</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-comment"># Вернуть тензоры TensorFlow</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)

<span class="hljs-comment"># Вернуть массивы NumPy</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;np&quot;</span>)`,wrap:!1}}),B=new Sl({props:{title:"Специальные токены",local:"special-tokens",headingTag:"h2"}}),G=new Q({props:{code:"c2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2UpJTBBcHJpbnQobW9kZWxfaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVEKSUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFwcmludChpZHMp",highlighted:`sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>

model_inputs = tokenizer(sequence)
<span class="hljs-built_in">print</span>(model_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])

tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
<span class="hljs-built_in">print</span>(ids)`,wrap:!1}}),z=new Q({props:{code:"JTVCMTAxJTJDJTIwMTA0NSUyQyUyMDEwMDUlMkMlMjAyMzEwJTJDJTIwMjA0MiUyQyUyMDM0MDMlMkMlMjAyMDA1JTJDJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAyNjA3JTJDJTIwMjAyNiUyQyUyMDI4NzglMkMlMjAyMTY2JTJDJTIwMTAxMiUyQyUyMDEwMiU1RCUwQSU1QjEwNDUlMkMlMjAxMDA1JTJDJTIwMjMxMCUyQyUyMDIwNDIlMkMlMjAzNDAzJTJDJTIwMjAwNSUyQyUyMDEwMzclMkMlMjAxNzY2MiUyQyUyMDEyMTcyJTJDJTIwMjYwNyUyQyUyMDIwMjYlMkMlMjAyODc4JTJDJTIwMjE2NiUyQyUyMDEwMTIlNUQ=",highlighted:`[<span class="hljs-number">101</span>, <span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>, <span class="hljs-number">12172</span>, <span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>]
[<span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>, <span class="hljs-number">12172</span>, <span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>]`,wrap:!1}}),v=new Q({props:{code:"cHJpbnQodG9rZW5pemVyLmRlY29kZShtb2RlbF9pbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQpKSUwQXByaW50KHRva2VuaXplci5kZWNvZGUoaWRzKSk=",highlighted:`<span class="hljs-built_in">print</span>(tokenizer.decode(model_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>]))
<span class="hljs-built_in">print</span>(tokenizer.decode(ids))`,wrap:!1}}),Y=new Q({props:{code:"JTIyJTVCQ0xTJTVEJTIwaSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMGh1Z2dpbmdmYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIwJTVCU0VQJTVEJTIyJTBBJTIyaSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMGh1Z2dpbmdmYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIy",highlighted:`<span class="hljs-string">&quot;[CLS] i&#x27;ve been waiting for a huggingface course my whole life. [SEP]&quot;</span>
<span class="hljs-string">&quot;i&#x27;ve been waiting for a huggingface course my whole life.&quot;</span>`,wrap:!1}}),H=new Sl({props:{title:"Подведение итогов: От токенизатора к модели",local:"wrapping-up-from-tokenizer-to-model",headingTag:"h2"}});const Fl=[ce,re],K=[];function Hl(l,e){return l[0]==="pt"?0:1}return b=Hl(E),j=K[b]=Fl[b](E),P=new pe({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ru/chapter2/6.mdx"}}),{c(){J=V("meta"),U=a(),t=V("p"),m=a(),o(I.$$.fragment),tl=a(),o(R.$$.fragment),nl=a(),T.c(),ll=a(),d=V("p"),d.textContent=Zl,Jl=a(),f=V("p"),f.innerHTML=Al,al=a(),o(h.$$.fragment),Ml=a(),D=V("p"),D.innerHTML=$l,Ul=a(),g=V("p"),g.textContent=Nl,pl=a(),o(k.$$.fragment),il=a(),S=V("p"),S.textContent=Wl,ol=a(),o(Z.$$.fragment),rl=a(),A=V("p"),A.textContent=xl,cl=a(),o($.$$.fragment),ul=a(),N=V("p"),N.textContent=_l,Vl=a(),o(W.$$.fragment),wl=a(),x=V("p"),x.innerHTML=Bl,ml=a(),o(_.$$.fragment),Cl=a(),o(B.$$.fragment),Ql=a(),X=V("p"),X.textContent=Xl,El=a(),o(G.$$.fragment),yl=a(),o(z.$$.fragment),Tl=a(),q=V("p"),q.textContent=Gl,bl=a(),o(v.$$.fragment),jl=a(),o(Y.$$.fragment),Il=a(),F=V("p"),F.innerHTML=zl,Rl=a(),o(H.$$.fragment),dl=a(),O=V("p"),O.innerHTML=ql,fl=a(),j.c(),el=a(),o(P.$$.fragment),hl=a(),sl=V("p"),this.h()},l(l){const e=ae("svelte-u9bgzb",document.head);J=w(e,"META",{name:!0,content:!0}),e.forEach(s),U=M(l),t=w(l,"P",{}),Pl(t).forEach(s),m=M(l),r(I.$$.fragment,l),tl=M(l),r(R.$$.fragment,l),nl=M(l),T.l(l),ll=M(l),d=w(l,"P",{"data-svelte-h":!0}),C(d)!=="svelte-1qspsn7"&&(d.textContent=Zl),Jl=M(l),f=w(l,"P",{"data-svelte-h":!0}),C(f)!=="svelte-1c9gskv"&&(f.innerHTML=Al),al=M(l),r(h.$$.fragment,l),Ml=M(l),D=w(l,"P",{"data-svelte-h":!0}),C(D)!=="svelte-bfsxl7"&&(D.innerHTML=$l),Ul=M(l),g=w(l,"P",{"data-svelte-h":!0}),C(g)!=="svelte-r4zf48"&&(g.textContent=Nl),pl=M(l),r(k.$$.fragment,l),il=M(l),S=w(l,"P",{"data-svelte-h":!0}),C(S)!=="svelte-1e4pp3k"&&(S.textContent=Wl),ol=M(l),r(Z.$$.fragment,l),rl=M(l),A=w(l,"P",{"data-svelte-h":!0}),C(A)!=="svelte-awrm8g"&&(A.textContent=xl),cl=M(l),r($.$$.fragment,l),ul=M(l),N=w(l,"P",{"data-svelte-h":!0}),C(N)!=="svelte-wx0f7x"&&(N.textContent=_l),Vl=M(l),r(W.$$.fragment,l),wl=M(l),x=w(l,"P",{"data-svelte-h":!0}),C(x)!=="svelte-13cruk0"&&(x.innerHTML=Bl),ml=M(l),r(_.$$.fragment,l),Cl=M(l),r(B.$$.fragment,l),Ql=M(l),X=w(l,"P",{"data-svelte-h":!0}),C(X)!=="svelte-2cexa6"&&(X.textContent=Xl),El=M(l),r(G.$$.fragment,l),yl=M(l),r(z.$$.fragment,l),Tl=M(l),q=w(l,"P",{"data-svelte-h":!0}),C(q)!=="svelte-1xy2mj1"&&(q.textContent=Gl),bl=M(l),r(v.$$.fragment,l),jl=M(l),r(Y.$$.fragment,l),Il=M(l),F=w(l,"P",{"data-svelte-h":!0}),C(F)!=="svelte-mebgwb"&&(F.innerHTML=zl),Rl=M(l),r(H.$$.fragment,l),dl=M(l),O=w(l,"P",{"data-svelte-h":!0}),C(O)!=="svelte-1dc8rk9"&&(O.innerHTML=ql),fl=M(l),j.l(l),el=M(l),r(P.$$.fragment,l),hl=M(l),sl=w(l,"P",{}),Pl(sl).forEach(s),this.h()},h(){Ll(J,"name","hf:doc:metadata"),Ll(J,"content",Ve)},m(l,e){Me(document.head,J),n(l,U,e),n(l,t,e),n(l,m,e),c(I,l,e),n(l,tl,e),c(R,l,e),n(l,nl,e),L[y].m(l,e),n(l,ll,e),n(l,d,e),n(l,Jl,e),n(l,f,e),n(l,al,e),c(h,l,e),n(l,Ml,e),n(l,D,e),n(l,Ul,e),n(l,g,e),n(l,pl,e),c(k,l,e),n(l,il,e),n(l,S,e),n(l,ol,e),c(Z,l,e),n(l,rl,e),n(l,A,e),n(l,cl,e),c($,l,e),n(l,ul,e),n(l,N,e),n(l,Vl,e),c(W,l,e),n(l,wl,e),n(l,x,e),n(l,ml,e),c(_,l,e),n(l,Cl,e),c(B,l,e),n(l,Ql,e),n(l,X,e),n(l,El,e),c(G,l,e),n(l,yl,e),c(z,l,e),n(l,Tl,e),n(l,q,e),n(l,bl,e),c(v,l,e),n(l,jl,e),c(Y,l,e),n(l,Il,e),n(l,F,e),n(l,Rl,e),c(H,l,e),n(l,dl,e),n(l,O,e),n(l,fl,e),K[b].m(l,e),n(l,el,e),c(P,l,e),n(l,hl,e),n(l,sl,e),Dl=!0},p(l,[e]){const Ol={};e&1&&(Ol.fw=l[0]),I.$set(Ol);let gl=y;y=Yl(l),y!==gl&&(le(),p(L[gl],1,1,()=>{L[gl]=null}),Kl(),T=L[y],T||(T=L[y]=vl[y](l),T.c()),i(T,1),T.m(ll.parentNode,ll));let kl=b;b=Hl(l),b!==kl&&(le(),p(K[kl],1,1,()=>{K[kl]=null}),Kl(),j=K[b],j||(j=K[b]=Fl[b](l),j.c()),i(j,1),j.m(el.parentNode,el))},i(l){Dl||(i(I.$$.fragment,l),i(R.$$.fragment,l),i(T),i(h.$$.fragment,l),i(k.$$.fragment,l),i(Z.$$.fragment,l),i($.$$.fragment,l),i(W.$$.fragment,l),i(_.$$.fragment,l),i(B.$$.fragment,l),i(G.$$.fragment,l),i(z.$$.fragment,l),i(v.$$.fragment,l),i(Y.$$.fragment,l),i(H.$$.fragment,l),i(j),i(P.$$.fragment,l),Dl=!0)},o(l){p(I.$$.fragment,l),p(R.$$.fragment,l),p(T),p(h.$$.fragment,l),p(k.$$.fragment,l),p(Z.$$.fragment,l),p($.$$.fragment,l),p(W.$$.fragment,l),p(_.$$.fragment,l),p(B.$$.fragment,l),p(G.$$.fragment,l),p(z.$$.fragment,l),p(v.$$.fragment,l),p(Y.$$.fragment,l),p(H.$$.fragment,l),p(j),p(P.$$.fragment,l),Dl=!1},d(l){l&&(s(U),s(t),s(m),s(tl),s(nl),s(ll),s(d),s(Jl),s(f),s(al),s(Ml),s(D),s(Ul),s(g),s(pl),s(il),s(S),s(ol),s(rl),s(A),s(cl),s(ul),s(N),s(Vl),s(wl),s(x),s(ml),s(Cl),s(Ql),s(X),s(El),s(yl),s(Tl),s(q),s(bl),s(jl),s(Il),s(F),s(Rl),s(dl),s(O),s(fl),s(el),s(hl),s(sl)),s(J),u(I,l),u(R,l),L[y].d(l),u(h,l),u(k,l),u(Z,l),u($,l),u(W,l),u(_,l),u(B,l),u(G,l),u(z,l),u(v,l),u(Y,l),u(H,l),K[b].d(l),u(P,l)}}}const Ve='{"title":"Собираем все воедино","local":"putting-it-all-together","sections":[{"title":"Специальные токены","local":"special-tokens","sections":[],"depth":2},{"title":"Подведение итогов: От токенизатора к модели","local":"wrapping-up-from-tokenizer-to-model","sections":[],"depth":2}],"depth":1}';function we(E,J,U){let t="pt";return te(()=>{const m=new URLSearchParams(window.location.search);U(0,t=m.get("fw")||"pt")}),[t]}class be extends ne{constructor(J){super(),Je(this,J,we,ue,se,{})}}export{be as component};
