import{s as Rt,o as St,n as Wt}from"../chunks/scheduler.37c15a92.js";import{S as Bt,i as zt,g as f,s as c,r as J,A as Lt,h as T,f as n,c as M,j as Gt,u as U,x as b,k as Ts,y as Ft,a,v as j,t as m,b as L,d as o,w,m as Xt,n as Yt,p as F}from"../chunks/index.2bf4358c.js";import{T as Vt}from"../chunks/Tip.363c041f.js";import{Y as Zt}from"../chunks/Youtube.1e50a667.js";import{C as h}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as Ht}from"../chunks/CourseFloatingBanner.06521e8b.js";import{F as Pt}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as yl}from"../chunks/Heading.8ada512a.js";function qt(y){let s,r;return s=new Ht({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/ru/chapter2/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ru/chapter2/section2_tf.ipynb"}]}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function Kt(y){let s,r;return s=new Ht({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/ru/chapter2/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ru/chapter2/section2_pt.ipynb"}]}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function Ot(y){let s;return{c(){s=Xt("Это первый раздел, содержание которого будет немного отличаться в зависимости от того, используете ли вы PyTorch или TensorFlow. Нажмите переключатель над заголовком, чтобы выбрать предпочитаемую платформу!")},l(r){s=Yt(r,"Это первый раздел, содержание которого будет немного отличаться в зависимости от того, используете ли вы PyTorch или TensorFlow. Нажмите переключатель над заголовком, чтобы выбрать предпочитаемую платформу!")},m(r,l){a(r,s,l)},d(r){r&&n(s)}}}function en(y){let s,r;return s=new Zt({props:{id:"wVN12smEvqg"}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function ln(y){let s,r;return s=new Zt({props:{id:"1pedAIvTWXk"}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function sn(y){let s,r;return s=new h({props:{code:"cmF3X2lucHV0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElNUQlMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIocmF3X2lucHV0cyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKSUwQXByaW50KGlucHV0cyk=",highlighted:`raw_inputs = [
    <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>,
    <span class="hljs-string">&quot;I hate this so much!&quot;</span>,
]
inputs = tokenizer(raw_inputs, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
<span class="hljs-built_in">print</span>(inputs)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function tn(y){let s,r;return s=new h({props:{code:"cmF3X2lucHV0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElNUQlMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIocmF3X2lucHV0cyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQXByaW50KGlucHV0cyk=",highlighted:`raw_inputs = [
    <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>,
    <span class="hljs-string">&quot;I hate this so much!&quot;</span>,
]
inputs = tokenizer(raw_inputs, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
<span class="hljs-built_in">print</span>(inputs)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function nn(y){let s,r="Вот как результаты выглядят в виде тензоров TensorFlow:",l,i,u;return i=new h({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJ2lucHV0X2lkcyclM0ElMjAlM0N0Zi5UZW5zb3IlM0ElMjBzaGFwZSUzRCgyJTJDJTIwMTYpJTJDJTIwZHR5cGUlM0RpbnQzMiUyQyUyMG51bXB5JTNEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXJyYXkoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwJTIwMTAxJTJDJTIwJTIwMTA0NSUyQyUyMCUyMDEwMDUlMkMlMjAlMjAyMzEwJTJDJTIwJTIwMjA0MiUyQyUyMCUyMDM0MDMlMkMlMjAlMjAyMDA1JTJDJTIwJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAlMjAyNjA3JTJDJTIwJTIwMjAyNiUyQyUyMCUyMDI4NzglMkMlMjAlMjAyMTY2JTJDJTIwJTIwMTAxMiUyQyUyMCUyMCUyMDEwMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjA1MjIzJTJDJTIwJTIwMjAyMyUyQyUyMCUyMDIwNjElMkMlMjAlMjAyMTcyJTJDJTIwJTIwJTIwOTk5JTJDJTIwJTIwJTIwMTAyJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMjBkdHlwZSUzRGludDMyKSUzRSUyQyUyMCUwQSUyMCUyMCUyMCUyMCdhdHRlbnRpb25fbWFzayclM0ElMjAlM0N0Zi5UZW5zb3IlM0ElMjBzaGFwZSUzRCgyJTJDJTIwMTYpJTJDJTIwZHR5cGUlM0RpbnQzMiUyQyUyMG51bXB5JTNEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXJyYXkoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QjElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMjBkdHlwZSUzRGludDMyKSUzRSUwQSU3RA==",highlighted:`{
    <span class="hljs-string">&#x27;input_ids&#x27;</span>: &lt;tf.Tensor: shape=(<span class="hljs-number">2</span>, <span class="hljs-number">16</span>), dtype=int32, numpy=
        array([
            [  <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">101</span>,  <span class="hljs-number">1045</span>,  <span class="hljs-number">5223</span>,  <span class="hljs-number">2023</span>,  <span class="hljs-number">2061</span>,  <span class="hljs-number">2172</span>,   <span class="hljs-number">999</span>,   <span class="hljs-number">102</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>]
        ], dtype=int32)&gt;, 
    <span class="hljs-string">&#x27;attention_mask&#x27;</span>: &lt;tf.Tensor: shape=(<span class="hljs-number">2</span>, <span class="hljs-number">16</span>), dtype=int32, numpy=
        array([
            [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>],
            [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>]
        ], dtype=int32)&gt;
}`,wrap:!1}}),{c(){s=f("p"),s.textContent=r,l=c(),J(i.$$.fragment)},l(p){s=T(p,"P",{"data-svelte-h":!0}),b(s)!=="svelte-e50syr"&&(s.textContent=r),l=M(p),U(i.$$.fragment,p)},m(p,d){a(p,s,d),a(p,l,d),j(i,p,d),u=!0},i(p){u||(o(i.$$.fragment,p),u=!0)},o(p){m(i.$$.fragment,p),u=!1},d(p){p&&(n(s),n(l)),w(i,p)}}}function an(y){let s,r="Вот как результаты выглядят в виде тензоров PyTorch:",l,i,u;return i=new h({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJ2lucHV0X2lkcyclM0ElMjB0ZW5zb3IoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwJTIwMTAxJTJDJTIwJTIwMTA0NSUyQyUyMCUyMDEwMDUlMkMlMjAlMjAyMzEwJTJDJTIwJTIwMjA0MiUyQyUyMCUyMDM0MDMlMkMlMjAlMjAyMDA1JTJDJTIwJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAyNjA3JTJDJTIwJTIwMjAyNiUyQyUyMCUyMDI4NzglMkMlMjAlMjAyMTY2JTJDJTIwJTIwMTAxMiUyQyUyMCUyMCUyMDEwMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjA1MjIzJTJDJTIwJTIwMjAyMyUyQyUyMCUyMDIwNjElMkMlMjAlMjAyMTcyJTJDJTIwJTIwJTIwOTk5JTJDJTIwJTIwJTIwMTAyJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlNUQlMEElMjAlMjAlMjAlMjAlNUQpJTJDJTIwJTBBJTIwJTIwJTIwJTIwJ2F0dGVudGlvbl9tYXNrJyUzQSUyMHRlbnNvciglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCU1RCUwQSUyMCUyMCUyMCUyMCU1RCklMEElN0Q=",highlighted:`{
    <span class="hljs-string">&#x27;input_ids&#x27;</span>: tensor([
        [  <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">101</span>,  <span class="hljs-number">1045</span>,  <span class="hljs-number">5223</span>,  <span class="hljs-number">2023</span>,  <span class="hljs-number">2061</span>,  <span class="hljs-number">2172</span>,   <span class="hljs-number">999</span>,   <span class="hljs-number">102</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>]
    ]), 
    <span class="hljs-string">&#x27;attention_mask&#x27;</span>: tensor([
        [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>],
        [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>]
    ])
}`,wrap:!1}}),{c(){s=f("p"),s.textContent=r,l=c(),J(i.$$.fragment)},l(p){s=T(p,"P",{"data-svelte-h":!0}),b(s)!=="svelte-1djtu0b"&&(s.textContent=r),l=M(p),U(i.$$.fragment,p)},m(p,d){a(p,s,d),a(p,l,d),j(i,p,d),u=!0},i(p){u||(o(i.$$.fragment,p),u=!0)},o(p){m(i.$$.fragment,p),u=!1},d(p){p&&(n(s),n(l)),w(i,p)}}}function rn(y){let s,r="Мы можем загрузить нашу предварительно обученную модель так же, как и наш токенизатор. Библиотека 🤗 Transformers предоставляет класс <code>TFAutoModel</code> который также имеет метод <code>from_pretrained</code>:",l,i,u;return i=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkLWZpbmV0dW5lZC1zc3QtMi1lbmdsaXNoJTIyJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbC5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModel

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = TFAutoModel.from_pretrained(checkpoint)`,wrap:!1}}),{c(){s=f("p"),s.innerHTML=r,l=c(),J(i.$$.fragment)},l(p){s=T(p,"P",{"data-svelte-h":!0}),b(s)!=="svelte-zszce2"&&(s.innerHTML=r),l=M(p),U(i.$$.fragment,p)},m(p,d){a(p,s,d),a(p,l,d),j(i,p,d),u=!0},i(p){u||(o(i.$$.fragment,p),u=!0)},o(p){m(i.$$.fragment,p),u=!1},d(p){p&&(n(s),n(l)),w(i,p)}}}function pn(y){let s,r="Мы можем загрузить нашу предварительно обученную модель так же, как и наш токенизатор. Библиотека 🤗 Transformers предоставляет класс <code>AutoModel</code> который также имеет метод <code>from_pretrained()</code>:",l,i,u;return i=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbCUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModel

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = AutoModel.from_pretrained(checkpoint)`,wrap:!1}}),{c(){s=f("p"),s.innerHTML=r,l=c(),J(i.$$.fragment)},l(p){s=T(p,"P",{"data-svelte-h":!0}),b(s)!=="svelte-1holn5l"&&(s.innerHTML=r),l=M(p),U(i.$$.fragment,p)},m(p,d){a(p,s,d),a(p,l,d),j(i,p,d),u=!0},i(p){u||(o(i.$$.fragment,p),u=!0)},o(p){m(i.$$.fragment,p),u=!1},d(p){p&&(n(s),n(l)),w(i,p)}}}function cn(y){let s,r,l,i;return s=new h({props:{code:"b3V0cHV0cyUyMCUzRCUyMG1vZGVsKGlucHV0cyklMEFwcmludChvdXRwdXRzLmxhc3RfaGlkZGVuX3N0YXRlLnNoYXBlKQ==",highlighted:`outputs = model(inputs)
<span class="hljs-built_in">print</span>(outputs.last_hidden_state.shape)`,wrap:!1}}),l=new h({props:{code:"KDIlMkMlMjAxNiUyQyUyMDc2OCk=",highlighted:'(<span class="hljs-number">2</span>, <span class="hljs-number">16</span>, <span class="hljs-number">768</span>)',wrap:!1}}),{c(){J(s.$$.fragment),r=c(),J(l.$$.fragment)},l(u){U(s.$$.fragment,u),r=M(u),U(l.$$.fragment,u)},m(u,p){j(s,u,p),a(u,r,p),j(l,u,p),i=!0},i(u){i||(o(s.$$.fragment,u),o(l.$$.fragment,u),i=!0)},o(u){m(s.$$.fragment,u),m(l.$$.fragment,u),i=!1},d(u){u&&n(r),w(s,u),w(l,u)}}}function Mn(y){let s,r,l,i;return s=new h({props:{code:"b3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKSUwQXByaW50KG91dHB1dHMubGFzdF9oaWRkZW5fc3RhdGUuc2hhcGUp",highlighted:`outputs = model(**inputs)
<span class="hljs-built_in">print</span>(outputs.last_hidden_state.shape)`,wrap:!1}}),l=new h({props:{code:"dG9yY2guU2l6ZSglNUIyJTJDJTIwMTYlMkMlMjA3NjglNUQp",highlighted:'torch.Size([<span class="hljs-number">2</span>, <span class="hljs-number">16</span>, <span class="hljs-number">768</span>])',wrap:!1}}),{c(){J(s.$$.fragment),r=c(),J(l.$$.fragment)},l(u){U(s.$$.fragment,u),r=M(u),U(l.$$.fragment,u)},m(u,p){j(s,u,p),a(u,r,p),j(l,u,p),i=!0},i(u){i||(o(s.$$.fragment,u),o(l.$$.fragment,u),i=!0)},o(u){m(s.$$.fragment,u),m(l.$$.fragment,u),i=!1},d(u){u&&n(r),w(s,u),w(l,u)}}}function un(y){let s,r="Для нашего примера нам понадобится модель со слоем “head” для классификации последовательностей (чтобы иметь возможность классифицировать предложения как положительные или отрицательные). Итак, на самом деле мы будем использовать не класс <code>TFAutoModel</code>, а <code>TFAutoModelForSequenceClassification</code>:",l,i,u;return i=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQW1vZGVsJTIwJTNEJTIwVEZBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW91dHB1dHMlMjAlM0QlMjBtb2RlbChpbnB1dHMp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
outputs = model(inputs)`,wrap:!1}}),{c(){s=f("p"),s.innerHTML=r,l=c(),J(i.$$.fragment)},l(p){s=T(p,"P",{"data-svelte-h":!0}),b(s)!=="svelte-1g26uy9"&&(s.innerHTML=r),l=M(p),U(i.$$.fragment,p)},m(p,d){a(p,s,d),a(p,l,d),j(i,p,d),u=!0},i(p){u||(o(i.$$.fragment,p),u=!0)},o(p){m(i.$$.fragment,p),u=!1},d(p){p&&(n(s),n(l)),w(i,p)}}}function mn(y){let s,r="Для нашего примера нам понадобится модель со слоем “head” для классификации последовательностей (чтобы иметь возможность классифицировать предложения как положительные или отрицательные). Итак, на самом деле мы будем использовать не класс <code>AutoModel</code>, а <code>AutoModelForSequenceClassification</code>:",l,i,u;return i=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBb3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
outputs = model(**inputs)`,wrap:!1}}),{c(){s=f("p"),s.innerHTML=r,l=c(),J(i.$$.fragment)},l(p){s=T(p,"P",{"data-svelte-h":!0}),b(s)!=="svelte-wa12ol"&&(s.innerHTML=r),l=M(p),U(i.$$.fragment,p)},m(p,d){a(p,s,d),a(p,l,d),j(i,p,d),u=!0},i(p){u||(o(i.$$.fragment,p),u=!0)},o(p){m(i.$$.fragment,p),u=!1},d(p){p&&(n(s),n(l)),w(i,p)}}}function on(y){let s,r;return s=new h({props:{code:"KDIlMkMlMjAyKQ==",highlighted:'(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>)',wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function yn(y){let s,r;return s=new h({props:{code:"dG9yY2guU2l6ZSglNUIyJTJDJTIwMiU1RCk=",highlighted:'torch.Size([<span class="hljs-number">2</span>, <span class="hljs-number">2</span>])',wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function fn(y){let s,r;return s=new h({props:{code:"JTNDdGYuVGVuc29yJTNBJTIwc2hhcGUlM0QoMiUyQyUyMDIpJTJDJTIwZHR5cGUlM0RmbG9hdDMyJTJDJTIwbnVtcHklM0QlMEElMjAlMjAlMjAlMjBhcnJheSglNUIlNUItMS41NjA2OTkxJTJDJTIwJTIwMS42MTIyODQyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwNC4xNjkyMzElMjAlMkMlMjAtMy4zNDY0NDcyJTVEJTVEJTJDJTIwZHR5cGUlM0RmbG9hdDMyKSUzRQ==",highlighted:`&lt;tf.Tensor: shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32, numpy=
    array([[-<span class="hljs-number">1.5606991</span>,  <span class="hljs-number">1.6122842</span>],
           [ <span class="hljs-number">4.169231</span> , -<span class="hljs-number">3.3464472</span>]], dtype=float32)&gt;`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function Tn(y){let s,r;return s=new h({props:{code:"dGVuc29yKCU1QiU1Qi0xLjU2MDclMkMlMjAlMjAxLjYxMjMlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjA0LjE2OTIlMkMlMjAtMy4zNDY0JTVEJTVEJTJDJTIwZ3JhZF9mbiUzRCUzQ0FkZG1tQmFja3dhcmQlM0Up",highlighted:`tensor([[-<span class="hljs-number">1.5607</span>,  <span class="hljs-number">1.6123</span>],
        [ <span class="hljs-number">4.1692</span>, -<span class="hljs-number">3.3464</span>]], grad_fn=&lt;AddmmBackward&gt;)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function bn(y){let s,r;return s=new h({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFwcmVkaWN0aW9ucyUyMCUzRCUyMHRmLm1hdGguc29mdG1heChvdXRwdXRzLmxvZ2l0cyUyQyUyMGF4aXMlM0QtMSklMEFwcmludChwcmVkaWN0aW9ucyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

predictions = tf.math.softmax(outputs.logits, axis=-<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function Jn(y){let s,r;return s=new h({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwcmVkaWN0aW9ucyUyMCUzRCUyMHRvcmNoLm5uLmZ1bmN0aW9uYWwuc29mdG1heChvdXRwdXRzLmxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQXByaW50KHByZWRpY3Rpb25zKQ==",highlighted:`<span class="hljs-keyword">import</span> torch

predictions = torch.nn.functional.softmax(outputs.logits, dim=-<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function Un(y){let s,r;return s=new h({props:{code:"dGYuVGVuc29yKCUwQSU1QiU1QjQuMDE5NTE2NzFlLTAyJTIwOS41OTgwNDgzM2UtMDElNUQlMEElMjAlNUI5Ljk5NDU1ODdlLTAxJTIwNS40NDE4NDI0ZS0wNCU1RCU1RCUyQyUyMHNoYXBlJTNEKDIlMkMlMjAyKSUyQyUyMGR0eXBlJTNEZmxvYXQzMik=",highlighted:`tf.Tensor(
[[<span class="hljs-number">4.01951671e-02</span> <span class="hljs-number">9.59804833e-01</span>]
 [<span class="hljs-number">9.9945587e-01</span> <span class="hljs-number">5.4418424e-04</span>]], shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function jn(y){let s,r;return s=new h({props:{code:"dGVuc29yKCU1QiU1QjQuMDE5NWUtMDIlMkMlMjA5LjU5ODBlLTAxJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCOS45OTQ2ZS0wMSUyQyUyMDUuNDQxOGUtMDQlNUQlNUQlMkMlMjBncmFkX2ZuJTNEJTNDU29mdG1heEJhY2t3YXJkJTNFKQ==",highlighted:`tensor([[<span class="hljs-number">4.0195e-02</span>, <span class="hljs-number">9.5980e-01</span>],
        [<span class="hljs-number">9.9946e-01</span>, <span class="hljs-number">5.4418e-04</span>]], grad_fn=&lt;SoftmaxBackward&gt;)`,wrap:!1}}),{c(){J(s.$$.fragment)},l(l){U(s.$$.fragment,l)},m(l,i){j(s,l,i),r=!0},i(l){r||(o(s.$$.fragment,l),r=!0)},o(l){m(s.$$.fragment,l),r=!1},d(l){w(s,l)}}}function wn(y){let s,r="✏️ <strong>Попробуйте это сделать!</strong> Выберите два (или более) собственных текста и пропустите их через конвейер <code>sentiment-analysis</code>. Затем повторите шаги, которые вы видели здесь, и убедитесь, что вы получаете такие же результаты!";return{c(){s=f("p"),s.innerHTML=r},l(l){s=T(l,"P",{"data-svelte-h":!0}),b(s)!=="svelte-qtevl"&&(s.innerHTML=r)},m(l,i){a(l,s,i)},p:Wt,d(l){l&&n(s)}}}function dn(y){let s,r,l,i,u,p,d,Tl,_,$,tl,X,bl,C,k,nl,K,Is='Давайте начнем с готового примера, взглянув на то, что происходило за кулисами, когда мы выполняли следующий код в <a href="../chapter1/1">Главе 1</a>:',Jl,O,Ul,ee,gs="и на выходе получали:",jl,le,wl,se,As='Как мы уже увидели в <a href="../chapter1/1">Главе 1</a>, данный конвейер включает в себя три шага: предварительная обработка, передача входных данных через модель и постобработка:',dl,Y,vs='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/full_nlp_pipeline.svg" alt="Полный конвейер NLP: токенизация текста, преобразование в идентификаторы и вывод с помощью модели Transformer и слоя &#39;head&#39; модели."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/full_nlp_pipeline-dark.svg" alt="Полный конвейер NLP: токенизация текста, преобразование в идентификаторы и вывод с помощью модели Transformer и &#39;head&#39; модели."/>',hl,te,xs="Давайте вкратце рассмотрим каждый из этих этапов.",_l,ne,$l,ae,Qs="Как и другие нейронные сети, модели Transformer не могут обрабатывать необработанный текст напрямую, поэтому первым шагом нашего конвейера является преобразование входных текстовых данных в числа, понятные модели. Для этого мы используем <em>токенизатор</em>, который будет отвечать за:",Cl,re,Ns="<li>Разделение входных данных на слова, подслова или символы (например, знаки препинания), которые называются <em>токенами</em></li> <li>Отображение каждого токена в целое число</li> <li>Добавление дополнительных входных данных, которые могут быть полезны для модели</li>",kl,pe,Ds='Всю эту предварительную обработку необходимо выполнять точно так же, как и при предварительном обучении модели, поэтому сначала нам нужно загрузить эту информацию из <a href="https://huggingface.co/models" rel="nofollow">Model Hub</a>. Для этого мы используем класс <code>AutoTokenizer</code> и его метод <code>from_pretrained()</code>. Используя имя контрольной точки нашей модели, он автоматически извлекает данные, связанные с токенизатором модели, и кэширует их (поэтому они загружаются только при первом запуске кода ниже).',Il,ie,Es='Поскольку контрольной точкой конвейра <code>sentiment-analysis</code> по-умолчанию является модель <code>distilbert-base-uncased-finetuned-sst-2-english</code> (вы можете увидеть карточку модели <a href="https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english" rel="nofollow">здесь</a>), мы выполним следующие команды:',gl,ce,Al,Me,Gs="После того, как мы сосздадим токенизатор, мы сможем напрямую передать ему наши предложения, и получить словарь, готовый для использования в нашей модели! Осталось только преобразовать список входных идентификаторов в тензоры.",vl,ue,Vs="Вы можете использовать библиотеку 🤗 Transformers, не беспокоясь о том, какой фреймворк ML используется в качестве бэкэнда; это может быть PyTorch или TensorFlow или Flax для некоторых моделей. Однако модели Transformer принимают только <em>тензоры</em> в качестве входных данных. Если вы впервые слышите о тензорах, вы можете представлять их как массивы NumPy. Массив NumPy может быть скаляром (0D), вектором (1D), матрицой (2D) или иметь больше измерений. Фактически это тензор; тензоры других платформ машинного обучения ведут себя аналогично, и обычно их так же просто создавать, как массивы NumPy.",xl,me,Zs="Чтобы указать тип тензоров, которые мы хотим получить (PyTorch, TensorFlow, или обычный NumPy), мы используем аргумент <code>return_tensors</code>:",Ql,I,g,al,oe,Hs="Не беспокойтесь пока о параметрах дополнения (padding) и усечения (truncation); мы объясним это позже. Здесь главное помнить, что вы можете передать одно предложение или список предложений, а также указать тип тензоров, которые вы хотите получить обратно (если тип не передан, в результате вы получите список из списков).",Nl,A,v,rl,ye,Rs="Сам вывод представляет собой словарь, содержащий два ключа, <code>input_ids</code> и <code>attention_mask</code>. <code>input_ids</code> содержит две строки целых чисел (по одному для каждого предложения), которые являются уникальными идентификаторами токенов в каждом предложении. Мы объясним, что такое <code>attention_mask</code> позже в этой главе.",Dl,fe,El,x,Q,pl,Te,Ss="В этом фрагменте кода мы загрузили ту же контрольную точку, которую использовали в нашем конвейере ранее (на самом деле она уже должна была быть закэширована) и создали с ее помощью экземпляр модели.",Gl,be,Ws="Эта архитектура содержит только базовый модуль Transformer: при некоторых входных данных он выводит то, что мы будем называть <em>скрытыми состояниями</em>, также известными как <em>параметры</em>. Для каждого входного набора данных модели мы получим многомерный вектор, представляющий <strong>контекстное понимание этого входного набора моделью Transformer</strong>.",Vl,Je,Bs="Если вы пока не понимаете в чем смысл, не беспокойтесь об этом. Мы объясним все это позже.",Zl,Ue,zs='Хотя эти скрытые состояния могут быть полезны сами по себе, они обычно являются входными данными для другой части модели, известной как слой <em>head</em>. В <a href="../chapter1/1">Главе 1</a> разные задачи могли бы выполняться с одной и той же архитектурой, но с каждой из этих задач будет связан отдельный слой “head”.',Hl,je,Rl,we,Ls="Вектор, выводимый модулем Transformer, обычно является большим. И как правило, он имеет три параметра:",Sl,de,Fs="<li><strong>Размер пакета</strong>: Количество последовательностей, обрабатываемых одновременно (в нашем примере 2).</li> <li><strong>Длина последовательности</strong>: Длина числового представления последовательности (в нашем примере 16).</li> <li><strong>Размер скрытого слоя сети</strong>: Количество измерений вектора каждого входного параметра модели.</li>",Wl,he,Xs="Его называют “многомерный” из-за последнего значения. Размер скрытого слоя сети может быть очень большим (768 обычно используется для небольших моделей, а в больших моделях он может достигать 3072 или более).",Bl,_e,Ys="Мы можем увидеть это, если передадим входные данные, которые мы предварительно обработали, в нашу модель:",zl,N,D,il,$e,Ps="Обратите внимание, что выходные данные моделей 🤗 Transformers ведут себя как именованные кортежи или словари. Вы можете получить доступ к элементам по атрибутам (как это сделали мы) или по ключу (<code>outputs[&quot;last_hidden_state&quot;]</code>), или даже по индексу, если вы точно знаете, где находится то, что вы ищете (<code>outputs[0]</code>).",Ll,Ce,Fl,ke,qs="Слои “head” модели принимают многомерный вектор скрытых состояний в качестве входных данных и проецируют их в другое измерение. Они обычно состоят из одного или нескольких линейных слоев:",Xl,P,Ks='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/transformer_and_head.svg" alt="Нейронная сеть Transformer перед слоем &#39;head&#39;."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/transformer_and_head-dark.svg" alt="Нейронная сеть Transformer перед слоем с &#39;head&#39;."/>',Yl,Ie,Os="Выходные данные модели Transformer отправляются непосредственно в слой “head” модели для обработки.",Pl,ge,et="На данной диаграмме модель представлена слоем вложений и последующими слоями. Слой вложений преобразует каждый входной идентификатор полученный токенизатором, в вектор, который представляет собой связанный с ним токен. Последующие слои манипулируют этими векторами, используя механизм внимания, чтобы получить окончательное представление предложений.",ql,Ae,lt="В 🤗 Transformersдоступно множество различных архитектур, каждая из которых предназначена для решения конкретной задачи. Вот неполный список:",Kl,ve,st="<li><code>*Model</code> (извлекает скрытые состояния)</li> <li><code>*ForCausalLM</code></li> <li><code>*ForMaskedLM</code></li> <li><code>*ForMultipleChoice</code></li> <li><code>*ForQuestionAnswering</code></li> <li><code>*ForSequenceClassification</code></li> <li><code>*ForTokenClassification</code></li> <li>и другие 🤗</li>",Ol,E,G,cl,xe,tt="Теперь, если мы посмотрим на форму наших входных данных, размерность будет намного ниже: слой “head” модели принимает в качестве входных данных многомерные векторы, которые мы видели ранее, и выводит векторы, содержащие всего два значения (по одному на метку):",es,Qe,ls,V,Z,Ml,Ne,nt="Поскольку у нас всего два предложения и две метки, результат, который мы получаем от нашей модели, имеет форму 2 x 2.",ss,De,ts,Ee,at="Значения, которые мы получаем в качестве выходных данных нашей модели, не обязательно имеют смысл сами по себе. Давайте посмотрим:",ns,Ge,as,H,R,ul,Ve,rt='Наша модель предсказала <code>[-1.5607, 1.6123]</code> для первого предложения и <code>[ 4.1692, -3.3464]</code> для второго. Это не вероятности, а <em>логиты</em>, необработанные, ненормализованные оценки, выводимые последним слоем модели. Для преобразования в вероятности, они должны пройти через слой <a href="https://en.wikipedia.org/wiki/Softmax_function" rel="nofollow">SoftMax</a> (все модели 🤗 Transformers выводят логиты, поскольку функция потерь для обучения обычно объединяет последнюю функцию активации, такую как SoftMax, с фактической функцией потерь, такой как перекрестная энтропия):',rs,S,W,ml,B,z,ol,Ze,pt="Теперь мы видим, что модель предсказала <code>[0.0402, 0.9598]</code> для первого предложения и <code>[0.9995, 0.0005]</code> для второго. Это легко узнаваемые оценки вероятности.",ps,He,it="Чтобы получить метки, соответствующие каждой позиции, мы можем проверить атрибут <code>id2label</code> в конфигурации модели (подробнее об этом в следующем разделе):",is,Re,cs,Se,Ms,We,ct="Теперь мы можем сделать вывод, что модель предсказала следующее:",us,Be,Mt="<li>Первое предложение: NEGATIVE: 0.0402, POSITIVE: 0.9598</li> <li>Второе предложение: NEGATIVE: 0.9995, POSITIVE: 0.0005</li>",ms,ze,ut="Мы успешно воспроизвели три этапа конвейера: предварительную обработку с помощью токенизаторов, передачу входных данных через модель и постобработку! Теперь давайте уделим некоторое время тому, чтобы углубиться в каждый из этих шагов.",os,q,ys,fl,fs;u=new Pt({props:{fw:y[0]}}),d=new yl({props:{title:"Внутри конвейера",local:"внутри-конвейера",headingTag:"h1"}});const mt=[Kt,qt],Le=[];function ot(e,t){return e[0]==="pt"?0:1}_=ot(y),$=Le[_]=mt[_](y),X=new Vt({props:{$$slots:{default:[Ot]},$$scope:{ctx:y}}});const yt=[ln,en],Fe=[];function ft(e,t){return e[0]==="pt"?0:1}C=ft(y),k=Fe[C]=yt[C](y),O=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2xhc3NpZmllciUyMCUzRCUyMHBpcGVsaW5lKCUyMnNlbnRpbWVudC1hbmFseXNpcyUyMiklMEFjbGFzc2lmaWVyKCUwQSUyMCUyMCUyMCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElMjAlMjAlMjAlMjAlNUQlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

classifier = pipeline(<span class="hljs-string">&quot;sentiment-analysis&quot;</span>)
classifier(
    [
        <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>,
        <span class="hljs-string">&quot;I hate this so much!&quot;</span>,
    ]
)`,wrap:!1}}),le=new h({props:{code:"JTVCJTdCJ2xhYmVsJyUzQSUyMCdQT1NJVElWRSclMkMlMjAnc2NvcmUnJTNBJTIwMC45NTk4MDQ3MTM3MjYwNDM3JTdEJTJDJTBBJTIwJTdCJ2xhYmVsJyUzQSUyMCdORUdBVElWRSclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTk0NTU4MDk1OTMyMDA3JTdEJTVE",highlighted:`[{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;POSITIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9598047137260437</span>},
 {<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;NEGATIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9994558095932007</span>}]`,wrap:!1}}),ne=new yl({props:{title:"Предварительная обработка с помощью токенизатора",local:"предварительная-обработка-с-помощью-токенизатора",headingTag:"h2"}}),ce=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",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)`,wrap:!1}});const Tt=[tn,sn],Xe=[];function bt(e,t){return e[0]==="pt"?0:1}I=bt(y),g=Xe[I]=Tt[I](y);const Jt=[an,nn],Ye=[];function Ut(e,t){return e[0]==="pt"?0:1}A=Ut(y),v=Ye[A]=Jt[A](y),fe=new yl({props:{title:"Проходим через модель",local:"проходим-через-модель",headingTag:"h2"}});const jt=[pn,rn],Pe=[];function wt(e,t){return e[0]==="pt"?0:1}x=wt(y),Q=Pe[x]=jt[x](y),je=new yl({props:{title:"Многомерный вектор, что это?",local:"многомерный-вектор-что-это",headingTag:"h3"}});const dt=[Mn,cn],qe=[];function ht(e,t){return e[0]==="pt"?0:1}N=ht(y),D=qe[N]=dt[N](y),Ce=new yl({props:{title:"Слои “head” модели: Разбираемся в цифрах",local:"слои-head-модели-разбираемся-в-цифрах",headingTag:"h3"}});const _t=[mn,un],Ke=[];function $t(e,t){return e[0]==="pt"?0:1}E=$t(y),G=Ke[E]=_t[E](y),Qe=new h({props:{code:"cHJpbnQob3V0cHV0cy5sb2dpdHMuc2hhcGUp",highlighted:'<span class="hljs-built_in">print</span>(outputs.logits.shape)',wrap:!1}});const Ct=[yn,on],Oe=[];function kt(e,t){return e[0]==="pt"?0:1}V=kt(y),Z=Oe[V]=Ct[V](y),De=new yl({props:{title:"Постобработка выходных данных",local:"постобработка-выходных-данных",headingTag:"h2"}}),Ge=new h({props:{code:"cHJpbnQob3V0cHV0cy5sb2dpdHMp",highlighted:'<span class="hljs-built_in">print</span>(outputs.logits)',wrap:!1}});const It=[Tn,fn],el=[];function gt(e,t){return e[0]==="pt"?0:1}H=gt(y),R=el[H]=It[H](y);const At=[Jn,bn],ll=[];function vt(e,t){return e[0]==="pt"?0:1}S=vt(y),W=ll[S]=At[S](y);const xt=[jn,Un],sl=[];function Qt(e,t){return e[0]==="pt"?0:1}return B=Qt(y),z=sl[B]=xt[B](y),Re=new h({props:{code:"bW9kZWwuY29uZmlnLmlkMmxhYmVs",highlighted:"model.config.id2label",wrap:!1}}),Se=new h({props:{code:"JTdCMCUzQSUyMCdORUdBVElWRSclMkMlMjAxJTNBJTIwJ1BPU0lUSVZFJyU3RA==",highlighted:'{<span class="hljs-number">0</span>: <span class="hljs-string">&#x27;NEGATIVE&#x27;</span>, <span class="hljs-number">1</span>: <span class="hljs-string">&#x27;POSITIVE&#x27;</span>}',wrap:!1}}),q=new Vt({props:{$$slots:{default:[wn]},$$scope:{ctx:y}}}),{c(){s=f("meta"),r=c(),l=f("p"),i=c(),J(u.$$.fragment),p=c(),J(d.$$.fragment),Tl=c(),$.c(),tl=c(),J(X.$$.fragment),bl=c(),k.c(),nl=c(),K=f("p"),K.innerHTML=Is,Jl=c(),J(O.$$.fragment),Ul=c(),ee=f("p"),ee.textContent=gs,jl=c(),J(le.$$.fragment),wl=c(),se=f("p"),se.innerHTML=As,dl=c(),Y=f("div"),Y.innerHTML=vs,hl=c(),te=f("p"),te.textContent=xs,_l=c(),J(ne.$$.fragment),$l=c(),ae=f("p"),ae.innerHTML=Qs,Cl=c(),re=f("ul"),re.innerHTML=Ns,kl=c(),pe=f("p"),pe.innerHTML=Ds,Il=c(),ie=f("p"),ie.innerHTML=Es,gl=c(),J(ce.$$.fragment),Al=c(),Me=f("p"),Me.textContent=Gs,vl=c(),ue=f("p"),ue.innerHTML=Vs,xl=c(),me=f("p"),me.innerHTML=Zs,Ql=c(),g.c(),al=c(),oe=f("p"),oe.textContent=Hs,Nl=c(),v.c(),rl=c(),ye=f("p"),ye.innerHTML=Rs,Dl=c(),J(fe.$$.fragment),El=c(),Q.c(),pl=c(),Te=f("p"),Te.textContent=Ss,Gl=c(),be=f("p"),be.innerHTML=Ws,Vl=c(),Je=f("p"),Je.textContent=Bs,Zl=c(),Ue=f("p"),Ue.innerHTML=zs,Hl=c(),J(je.$$.fragment),Rl=c(),we=f("p"),we.textContent=Ls,Sl=c(),de=f("ul"),de.innerHTML=Fs,Wl=c(),he=f("p"),he.textContent=Xs,Bl=c(),_e=f("p"),_e.textContent=Ys,zl=c(),D.c(),il=c(),$e=f("p"),$e.innerHTML=Ps,Ll=c(),J(Ce.$$.fragment),Fl=c(),ke=f("p"),ke.textContent=qs,Xl=c(),P=f("div"),P.innerHTML=Ks,Yl=c(),Ie=f("p"),Ie.textContent=Os,Pl=c(),ge=f("p"),ge.textContent=et,ql=c(),Ae=f("p"),Ae.textContent=lt,Kl=c(),ve=f("ul"),ve.innerHTML=st,Ol=c(),G.c(),cl=c(),xe=f("p"),xe.textContent=tt,es=c(),J(Qe.$$.fragment),ls=c(),Z.c(),Ml=c(),Ne=f("p"),Ne.textContent=nt,ss=c(),J(De.$$.fragment),ts=c(),Ee=f("p"),Ee.textContent=at,ns=c(),J(Ge.$$.fragment),as=c(),R.c(),ul=c(),Ve=f("p"),Ve.innerHTML=rt,rs=c(),W.c(),ml=c(),z.c(),ol=c(),Ze=f("p"),Ze.innerHTML=pt,ps=c(),He=f("p"),He.innerHTML=it,is=c(),J(Re.$$.fragment),cs=c(),J(Se.$$.fragment),Ms=c(),We=f("p"),We.textContent=ct,us=c(),Be=f("ul"),Be.innerHTML=Mt,ms=c(),ze=f("p"),ze.textContent=ut,os=c(),J(q.$$.fragment),ys=c(),fl=f("p"),this.h()},l(e){const t=Lt("svelte-u9bgzb",document.head);s=T(t,"META",{name:!0,content:!0}),t.forEach(n),r=M(e),l=T(e,"P",{}),Gt(l).forEach(n),i=M(e),U(u.$$.fragment,e),p=M(e),U(d.$$.fragment,e),Tl=M(e),$.l(e),tl=M(e),U(X.$$.fragment,e),bl=M(e),k.l(e),nl=M(e),K=T(e,"P",{"data-svelte-h":!0}),b(K)!=="svelte-19wxn25"&&(K.innerHTML=Is),Jl=M(e),U(O.$$.fragment,e),Ul=M(e),ee=T(e,"P",{"data-svelte-h":!0}),b(ee)!=="svelte-1cvvd1f"&&(ee.textContent=gs),jl=M(e),U(le.$$.fragment,e),wl=M(e),se=T(e,"P",{"data-svelte-h":!0}),b(se)!=="svelte-1svlrcg"&&(se.innerHTML=As),dl=M(e),Y=T(e,"DIV",{class:!0,"data-svelte-h":!0}),b(Y)!=="svelte-1x703pg"&&(Y.innerHTML=vs),hl=M(e),te=T(e,"P",{"data-svelte-h":!0}),b(te)!=="svelte-1q10ggq"&&(te.textContent=xs),_l=M(e),U(ne.$$.fragment,e),$l=M(e),ae=T(e,"P",{"data-svelte-h":!0}),b(ae)!=="svelte-1ddongq"&&(ae.innerHTML=Qs),Cl=M(e),re=T(e,"UL",{"data-svelte-h":!0}),b(re)!=="svelte-17pxg2d"&&(re.innerHTML=Ns),kl=M(e),pe=T(e,"P",{"data-svelte-h":!0}),b(pe)!=="svelte-1iyq26v"&&(pe.innerHTML=Ds),Il=M(e),ie=T(e,"P",{"data-svelte-h":!0}),b(ie)!=="svelte-u2im5y"&&(ie.innerHTML=Es),gl=M(e),U(ce.$$.fragment,e),Al=M(e),Me=T(e,"P",{"data-svelte-h":!0}),b(Me)!=="svelte-r55rsl"&&(Me.textContent=Gs),vl=M(e),ue=T(e,"P",{"data-svelte-h":!0}),b(ue)!=="svelte-qdgcvk"&&(ue.innerHTML=Vs),xl=M(e),me=T(e,"P",{"data-svelte-h":!0}),b(me)!=="svelte-1paczg5"&&(me.innerHTML=Zs),Ql=M(e),g.l(e),al=M(e),oe=T(e,"P",{"data-svelte-h":!0}),b(oe)!=="svelte-vxai4u"&&(oe.textContent=Hs),Nl=M(e),v.l(e),rl=M(e),ye=T(e,"P",{"data-svelte-h":!0}),b(ye)!=="svelte-17vmh9y"&&(ye.innerHTML=Rs),Dl=M(e),U(fe.$$.fragment,e),El=M(e),Q.l(e),pl=M(e),Te=T(e,"P",{"data-svelte-h":!0}),b(Te)!=="svelte-1xf9fdo"&&(Te.textContent=Ss),Gl=M(e),be=T(e,"P",{"data-svelte-h":!0}),b(be)!=="svelte-19q4rsd"&&(be.innerHTML=Ws),Vl=M(e),Je=T(e,"P",{"data-svelte-h":!0}),b(Je)!=="svelte-uvpauf"&&(Je.textContent=Bs),Zl=M(e),Ue=T(e,"P",{"data-svelte-h":!0}),b(Ue)!=="svelte-1stx65q"&&(Ue.innerHTML=zs),Hl=M(e),U(je.$$.fragment,e),Rl=M(e),we=T(e,"P",{"data-svelte-h":!0}),b(we)!=="svelte-1gob41x"&&(we.textContent=Ls),Sl=M(e),de=T(e,"UL",{"data-svelte-h":!0}),b(de)!=="svelte-11dkhvx"&&(de.innerHTML=Fs),Wl=M(e),he=T(e,"P",{"data-svelte-h":!0}),b(he)!=="svelte-1lmgyax"&&(he.textContent=Xs),Bl=M(e),_e=T(e,"P",{"data-svelte-h":!0}),b(_e)!=="svelte-vqguag"&&(_e.textContent=Ys),zl=M(e),D.l(e),il=M(e),$e=T(e,"P",{"data-svelte-h":!0}),b($e)!=="svelte-dd84e3"&&($e.innerHTML=Ps),Ll=M(e),U(Ce.$$.fragment,e),Fl=M(e),ke=T(e,"P",{"data-svelte-h":!0}),b(ke)!=="svelte-8ol06i"&&(ke.textContent=qs),Xl=M(e),P=T(e,"DIV",{class:!0,"data-svelte-h":!0}),b(P)!=="svelte-1b06wx4"&&(P.innerHTML=Ks),Yl=M(e),Ie=T(e,"P",{"data-svelte-h":!0}),b(Ie)!=="svelte-ms3e5g"&&(Ie.textContent=Os),Pl=M(e),ge=T(e,"P",{"data-svelte-h":!0}),b(ge)!=="svelte-6bxgua"&&(ge.textContent=et),ql=M(e),Ae=T(e,"P",{"data-svelte-h":!0}),b(Ae)!=="svelte-lmgzq3"&&(Ae.textContent=lt),Kl=M(e),ve=T(e,"UL",{"data-svelte-h":!0}),b(ve)!=="svelte-1q1yb97"&&(ve.innerHTML=st),Ol=M(e),G.l(e),cl=M(e),xe=T(e,"P",{"data-svelte-h":!0}),b(xe)!=="svelte-r93hhb"&&(xe.textContent=tt),es=M(e),U(Qe.$$.fragment,e),ls=M(e),Z.l(e),Ml=M(e),Ne=T(e,"P",{"data-svelte-h":!0}),b(Ne)!=="svelte-1hiarg0"&&(Ne.textContent=nt),ss=M(e),U(De.$$.fragment,e),ts=M(e),Ee=T(e,"P",{"data-svelte-h":!0}),b(Ee)!=="svelte-3i8byr"&&(Ee.textContent=at),ns=M(e),U(Ge.$$.fragment,e),as=M(e),R.l(e),ul=M(e),Ve=T(e,"P",{"data-svelte-h":!0}),b(Ve)!=="svelte-clafg3"&&(Ve.innerHTML=rt),rs=M(e),W.l(e),ml=M(e),z.l(e),ol=M(e),Ze=T(e,"P",{"data-svelte-h":!0}),b(Ze)!=="svelte-e4xhag"&&(Ze.innerHTML=pt),ps=M(e),He=T(e,"P",{"data-svelte-h":!0}),b(He)!=="svelte-12l0r7g"&&(He.innerHTML=it),is=M(e),U(Re.$$.fragment,e),cs=M(e),U(Se.$$.fragment,e),Ms=M(e),We=T(e,"P",{"data-svelte-h":!0}),b(We)!=="svelte-1y4uxy6"&&(We.textContent=ct),us=M(e),Be=T(e,"UL",{"data-svelte-h":!0}),b(Be)!=="svelte-q6wm6e"&&(Be.innerHTML=Mt),ms=M(e),ze=T(e,"P",{"data-svelte-h":!0}),b(ze)!=="svelte-mukyvh"&&(ze.textContent=ut),os=M(e),U(q.$$.fragment,e),ys=M(e),fl=T(e,"P",{}),Gt(fl).forEach(n),this.h()},h(){Ts(s,"name","hf:doc:metadata"),Ts(s,"content",hn),Ts(Y,"class","flex justify-center"),Ts(P,"class","flex justify-center")},m(e,t){Ft(document.head,s),a(e,r,t),a(e,l,t),a(e,i,t),j(u,e,t),a(e,p,t),j(d,e,t),a(e,Tl,t),Le[_].m(e,t),a(e,tl,t),j(X,e,t),a(e,bl,t),Fe[C].m(e,t),a(e,nl,t),a(e,K,t),a(e,Jl,t),j(O,e,t),a(e,Ul,t),a(e,ee,t),a(e,jl,t),j(le,e,t),a(e,wl,t),a(e,se,t),a(e,dl,t),a(e,Y,t),a(e,hl,t),a(e,te,t),a(e,_l,t),j(ne,e,t),a(e,$l,t),a(e,ae,t),a(e,Cl,t),a(e,re,t),a(e,kl,t),a(e,pe,t),a(e,Il,t),a(e,ie,t),a(e,gl,t),j(ce,e,t),a(e,Al,t),a(e,Me,t),a(e,vl,t),a(e,ue,t),a(e,xl,t),a(e,me,t),a(e,Ql,t),Xe[I].m(e,t),a(e,al,t),a(e,oe,t),a(e,Nl,t),Ye[A].m(e,t),a(e,rl,t),a(e,ye,t),a(e,Dl,t),j(fe,e,t),a(e,El,t),Pe[x].m(e,t),a(e,pl,t),a(e,Te,t),a(e,Gl,t),a(e,be,t),a(e,Vl,t),a(e,Je,t),a(e,Zl,t),a(e,Ue,t),a(e,Hl,t),j(je,e,t),a(e,Rl,t),a(e,we,t),a(e,Sl,t),a(e,de,t),a(e,Wl,t),a(e,he,t),a(e,Bl,t),a(e,_e,t),a(e,zl,t),qe[N].m(e,t),a(e,il,t),a(e,$e,t),a(e,Ll,t),j(Ce,e,t),a(e,Fl,t),a(e,ke,t),a(e,Xl,t),a(e,P,t),a(e,Yl,t),a(e,Ie,t),a(e,Pl,t),a(e,ge,t),a(e,ql,t),a(e,Ae,t),a(e,Kl,t),a(e,ve,t),a(e,Ol,t),Ke[E].m(e,t),a(e,cl,t),a(e,xe,t),a(e,es,t),j(Qe,e,t),a(e,ls,t),Oe[V].m(e,t),a(e,Ml,t),a(e,Ne,t),a(e,ss,t),j(De,e,t),a(e,ts,t),a(e,Ee,t),a(e,ns,t),j(Ge,e,t),a(e,as,t),el[H].m(e,t),a(e,ul,t),a(e,Ve,t),a(e,rs,t),ll[S].m(e,t),a(e,ml,t),sl[B].m(e,t),a(e,ol,t),a(e,Ze,t),a(e,ps,t),a(e,He,t),a(e,is,t),j(Re,e,t),a(e,cs,t),j(Se,e,t),a(e,Ms,t),a(e,We,t),a(e,us,t),a(e,Be,t),a(e,ms,t),a(e,ze,t),a(e,os,t),j(q,e,t),a(e,ys,t),a(e,fl,t),fs=!0},p(e,[t]){const Nt={};t&1&&(Nt.fw=e[0]),u.$set(Nt);let bs=_;_=ot(e),_!==bs&&(F(),m(Le[bs],1,1,()=>{Le[bs]=null}),L(),$=Le[_],$||($=Le[_]=mt[_](e),$.c()),o($,1),$.m(tl.parentNode,tl));const Dt={};t&2&&(Dt.$$scope={dirty:t,ctx:e}),X.$set(Dt);let Js=C;C=ft(e),C!==Js&&(F(),m(Fe[Js],1,1,()=>{Fe[Js]=null}),L(),k=Fe[C],k||(k=Fe[C]=yt[C](e),k.c()),o(k,1),k.m(nl.parentNode,nl));let Us=I;I=bt(e),I!==Us&&(F(),m(Xe[Us],1,1,()=>{Xe[Us]=null}),L(),g=Xe[I],g||(g=Xe[I]=Tt[I](e),g.c()),o(g,1),g.m(al.parentNode,al));let js=A;A=Ut(e),A!==js&&(F(),m(Ye[js],1,1,()=>{Ye[js]=null}),L(),v=Ye[A],v||(v=Ye[A]=Jt[A](e),v.c()),o(v,1),v.m(rl.parentNode,rl));let ws=x;x=wt(e),x!==ws&&(F(),m(Pe[ws],1,1,()=>{Pe[ws]=null}),L(),Q=Pe[x],Q||(Q=Pe[x]=jt[x](e),Q.c()),o(Q,1),Q.m(pl.parentNode,pl));let ds=N;N=ht(e),N!==ds&&(F(),m(qe[ds],1,1,()=>{qe[ds]=null}),L(),D=qe[N],D||(D=qe[N]=dt[N](e),D.c()),o(D,1),D.m(il.parentNode,il));let hs=E;E=$t(e),E!==hs&&(F(),m(Ke[hs],1,1,()=>{Ke[hs]=null}),L(),G=Ke[E],G||(G=Ke[E]=_t[E](e),G.c()),o(G,1),G.m(cl.parentNode,cl));let _s=V;V=kt(e),V!==_s&&(F(),m(Oe[_s],1,1,()=>{Oe[_s]=null}),L(),Z=Oe[V],Z||(Z=Oe[V]=Ct[V](e),Z.c()),o(Z,1),Z.m(Ml.parentNode,Ml));let $s=H;H=gt(e),H!==$s&&(F(),m(el[$s],1,1,()=>{el[$s]=null}),L(),R=el[H],R||(R=el[H]=It[H](e),R.c()),o(R,1),R.m(ul.parentNode,ul));let Cs=S;S=vt(e),S!==Cs&&(F(),m(ll[Cs],1,1,()=>{ll[Cs]=null}),L(),W=ll[S],W||(W=ll[S]=At[S](e),W.c()),o(W,1),W.m(ml.parentNode,ml));let ks=B;B=Qt(e),B!==ks&&(F(),m(sl[ks],1,1,()=>{sl[ks]=null}),L(),z=sl[B],z||(z=sl[B]=xt[B](e),z.c()),o(z,1),z.m(ol.parentNode,ol));const Et={};t&2&&(Et.$$scope={dirty:t,ctx:e}),q.$set(Et)},i(e){fs||(o(u.$$.fragment,e),o(d.$$.fragment,e),o($),o(X.$$.fragment,e),o(k),o(O.$$.fragment,e),o(le.$$.fragment,e),o(ne.$$.fragment,e),o(ce.$$.fragment,e),o(g),o(v),o(fe.$$.fragment,e),o(Q),o(je.$$.fragment,e),o(D),o(Ce.$$.fragment,e),o(G),o(Qe.$$.fragment,e),o(Z),o(De.$$.fragment,e),o(Ge.$$.fragment,e),o(R),o(W),o(z),o(Re.$$.fragment,e),o(Se.$$.fragment,e),o(q.$$.fragment,e),fs=!0)},o(e){m(u.$$.fragment,e),m(d.$$.fragment,e),m($),m(X.$$.fragment,e),m(k),m(O.$$.fragment,e),m(le.$$.fragment,e),m(ne.$$.fragment,e),m(ce.$$.fragment,e),m(g),m(v),m(fe.$$.fragment,e),m(Q),m(je.$$.fragment,e),m(D),m(Ce.$$.fragment,e),m(G),m(Qe.$$.fragment,e),m(Z),m(De.$$.fragment,e),m(Ge.$$.fragment,e),m(R),m(W),m(z),m(Re.$$.fragment,e),m(Se.$$.fragment,e),m(q.$$.fragment,e),fs=!1},d(e){e&&(n(r),n(l),n(i),n(p),n(Tl),n(tl),n(bl),n(nl),n(K),n(Jl),n(Ul),n(ee),n(jl),n(wl),n(se),n(dl),n(Y),n(hl),n(te),n(_l),n($l),n(ae),n(Cl),n(re),n(kl),n(pe),n(Il),n(ie),n(gl),n(Al),n(Me),n(vl),n(ue),n(xl),n(me),n(Ql),n(al),n(oe),n(Nl),n(rl),n(ye),n(Dl),n(El),n(pl),n(Te),n(Gl),n(be),n(Vl),n(Je),n(Zl),n(Ue),n(Hl),n(Rl),n(we),n(Sl),n(de),n(Wl),n(he),n(Bl),n(_e),n(zl),n(il),n($e),n(Ll),n(Fl),n(ke),n(Xl),n(P),n(Yl),n(Ie),n(Pl),n(ge),n(ql),n(Ae),n(Kl),n(ve),n(Ol),n(cl),n(xe),n(es),n(ls),n(Ml),n(Ne),n(ss),n(ts),n(Ee),n(ns),n(as),n(ul),n(Ve),n(rs),n(ml),n(ol),n(Ze),n(ps),n(He),n(is),n(cs),n(Ms),n(We),n(us),n(Be),n(ms),n(ze),n(os),n(ys),n(fl)),n(s),w(u,e),w(d,e),Le[_].d(e),w(X,e),Fe[C].d(e),w(O,e),w(le,e),w(ne,e),w(ce,e),Xe[I].d(e),Ye[A].d(e),w(fe,e),Pe[x].d(e),w(je,e),qe[N].d(e),w(Ce,e),Ke[E].d(e),w(Qe,e),Oe[V].d(e),w(De,e),w(Ge,e),el[H].d(e),ll[S].d(e),sl[B].d(e),w(Re,e),w(Se,e),w(q,e)}}}const hn='{"title":"Внутри конвейера","local":"внутри-конвейера","sections":[{"title":"Предварительная обработка с помощью токенизатора","local":"предварительная-обработка-с-помощью-токенизатора","sections":[],"depth":2},{"title":"Проходим через модель","local":"проходим-через-модель","sections":[{"title":"Многомерный вектор, что это?","local":"многомерный-вектор-что-это","sections":[],"depth":3},{"title":"Слои “head” модели: Разбираемся в цифрах","local":"слои-head-модели-разбираемся-в-цифрах","sections":[],"depth":3}],"depth":2},{"title":"Постобработка выходных данных","local":"постобработка-выходных-данных","sections":[],"depth":2}],"depth":1}';function _n(y,s,r){let l="pt";return St(()=>{const i=new URLSearchParams(window.location.search);r(0,l=i.get("fw")||"pt")}),[l]}class Qn extends Bt{constructor(s){super(),zt(this,s,_n,dn,Rt,{})}}export{Qn as component};
