import{s as Vs,o as As,n as $s}from"../chunks/scheduler.cc52f4b9.js";import{S as Zs,i as Qs,e as d,s as i,c as b,h as Es,a as J,d as p,b as u,f as hs,g as j,j as T,k as ks,l as Ns,m as M,n as y,o as c,u as X,t as m,p as f,v as B}from"../chunks/index.9480bb2b.js";import{T as _s}from"../chunks/Tip.f7b80743.js";import{C as gs,H as Xl,E as Ws}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.e0b4ce23.js";import{Y as Cs}from"../chunks/Youtube.7b12d9e8.js";import{C as w}from"../chunks/CodeBlock.d991436c.js";import{C as Is}from"../chunks/CourseFloatingBanner.0ea490da.js";import{F as Rs}from"../chunks/FrameworkSwitchCourse.42d12053.js";function Gs(o){let s,a;return s=new Is({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/section5_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section5_tf.ipynb"}]}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function zs(o){let s,a;return s=new Is({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/section5_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section5_pt.ipynb"}]}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function vs(o){let s,a;return s=new Cs({props:{id:"ROxrFOEbsQE"}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function Xs(o){let s,a;return s=new Cs({props:{id:"M6adb1j2jPI"}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function Bs(o){let s,a,e,r;return s=new w({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIudG9rZW5pemUoc2VxdWVuY2UpJTBBaWRzJTIwJTNEJTIwdG9rZW5pemVyLmNvbnZlcnRfdG9rZW5zX3RvX2lkcyh0b2tlbnMpJTBBaW5wdXRfaWRzJTIwJTNEJTIwdGYuY29uc3RhbnQoaWRzKSUwQSUyMyUyMCVEMCVBRCVEMSU4MiVEMCVCMCUyMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCQSVEMCVCMCUyMCVEMCVCMiVEMSU4QiVEMCVCNCVEMCVCMCVEMSU4MSVEMSU4MiUyMCVEMCVCRSVEMSU4OCVEMCVCOCVEMCVCMSVEMCVCQSVEMSU4My4lMEFtb2RlbChpbnB1dF9pZHMp",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)

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

tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
input_ids = tf.constant(ids)
<span class="hljs-comment"># Эта строка выдаст ошибку.</span>
model(input_ids)`,wrap:!1}}),e=new w({props:{code:"SW52YWxpZEFyZ3VtZW50RXJyb3IlM0ElMjBJbnB1dCUyMHRvJTIwcmVzaGFwZSUyMGlzJTIwYSUyMHRlbnNvciUyMHdpdGglMjAxNCUyMHZhbHVlcyUyQyUyMGJ1dCUyMHRoZSUyMHJlcXVlc3RlZCUyMHNoYXBlJTIwaGFzJTIwMTk2JTIwJTVCT3AlM0FSZXNoYXBlJTVE",highlighted:'InvalidArgumentError: Input to reshape <span class="hljs-keyword">is</span> a tensor <span class="hljs-keyword">with</span> <span class="hljs-number">14</span> values, but the requested shape has <span class="hljs-number">196</span> [Op:Reshape]',wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function Ds(o){let s,a,e,r;return s=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEFzZXF1ZW5jZSUyMCUzRCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFpbnB1dF9pZHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoaWRzKSUwQSUyMyUyMCVEMCVBRCVEMSU4MiVEMCVCMCUyMCVEMSU4MSVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCQSVEMCVCMCUyMCVEMCVCMiVEMSU4QiVEMCVCNCVEMCVCMCVEMSU4MSVEMSU4MiUyMCVEMCVCRSVEMSU4OCVEMCVCOCVEMCVCMSVEMCVCQSVEMSU4My4lMEFtb2RlbChpbnB1dF9pZHMp",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)

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

tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
input_ids = torch.tensor(ids)
<span class="hljs-comment"># Эта строка выдаст ошибку.</span>
model(input_ids)`,wrap:!1}}),e=new w({props:{code:"SW5kZXhFcnJvciUzQSUyMERpbWVuc2lvbiUyMG91dCUyMG9mJTIwcmFuZ2UlMjAoZXhwZWN0ZWQlMjB0byUyMGJlJTIwaW4lMjByYW5nZSUyMG9mJTIwJTVCLTElMkMlMjAwJTVEJTJDJTIwYnV0JTIwZ290JTIwMSk=",highlighted:'IndexError: Dimension out of <span class="hljs-built_in">range</span> (expected to be <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span> of [-<span class="hljs-number">1</span>, <span class="hljs-number">0</span>], but got <span class="hljs-number">1</span>)',wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function Ss(o){let s,a,e,r;return s=new w({props:{code:"dG9rZW5pemVkX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIpJTBBcHJpbnQodG9rZW5pemVkX2lucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCk=",highlighted:`tokenized_inputs = tokenizer(sequence, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
<span class="hljs-built_in">print</span>(tokenized_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])`,wrap:!1}}),e=new w({props:{code:"JTNDdGYuVGVuc29yJTNBJTIwc2hhcGUlM0QoMSUyQyUyMDE2KSUyQyUyMGR0eXBlJTNEaW50MzIlMkMlMjBudW1weSUzRCUwQWFycmF5KCU1QiU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjAxMDA1JTJDJTIwJTIwMjMxMCUyQyUyMCUyMDIwNDIlMkMlMjAlMjAzNDAzJTJDJTIwJTIwMjAwNSUyQyUyMCUyMDEwMzclMkMlMjAxNzY2MiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDEyMTcyJTJDJTIwJTIwMjYwNyUyQyUyMCUyMDIwMjYlMkMlMjAlMjAyODc4JTJDJTIwJTIwMjE2NiUyQyUyMCUyMDEwMTIlMkMlMjAlMjAlMjAxMDIlNUQlNUQlMkMlMjBkdHlwZSUzRGludDMyKSUzRQ==",highlighted:`&lt;tf.Tensor: shape=(<span class="hljs-number">1</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>]], dtype=int32)&gt;`,wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function Fs(o){let s,a,e,r;return s=new w({props:{code:"dG9rZW5pemVkX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBcHJpbnQodG9rZW5pemVkX2lucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCk=",highlighted:`tokenized_inputs = tokenizer(sequence, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
<span class="hljs-built_in">print</span>(tokenized_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])`,wrap:!1}}),e=new w({props:{code:"dGVuc29yKCU1QiU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjAxMDA1JTJDJTIwJTIwMjMxMCUyQyUyMCUyMDIwNDIlMkMlMjAlMjAzNDAzJTJDJTIwJTIwMjAwNSUyQyUyMCUyMDEwMzclMkMlMjAxNzY2MiUyQyUyMDEyMTcyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMjYwNyUyQyUyMCUyMDIwMjYlMkMlMjAlMjAyODc4JTJDJTIwJTIwMjE2NiUyQyUyMCUyMDEwMTIlMkMlMjAlMjAlMjAxMDIlNUQlNUQp",highlighted:`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>]])`,wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function Hs(o){let s,a;return s=new w({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIudG9rZW5pemUoc2VxdWVuY2UpJTBBaWRzJTIwJTNEJTIwdG9rZW5pemVyLmNvbnZlcnRfdG9rZW5zX3RvX2lkcyh0b2tlbnMpJTBBJTBBaW5wdXRfaWRzJTIwJTNEJTIwdGYuY29uc3RhbnQoJTVCaWRzJTVEKSUwQXByaW50KCUyMklucHV0JTIwSURzJTNBJTIyJTJDJTIwaW5wdXRfaWRzKSUwQSUwQW91dHB1dCUyMCUzRCUyMG1vZGVsKGlucHV0X2lkcyklMEFwcmludCglMjJMb2dpdHMlM0ElMjIlMkMlMjBvdXRwdXQubG9naXRzKQ==",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)

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

tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)

input_ids = tf.constant([ids])
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Input IDs:&quot;</span>, input_ids)

output = model(input_ids)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Logits:&quot;</span>, output.logits)`,wrap:!1}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function xs(o){let s,a;return s=new w({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEFzZXF1ZW5jZSUyMCUzRCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEElMEFpbnB1dF9pZHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTVCaWRzJTVEKSUwQXByaW50KCUyMklucHV0JTIwSURzJTNBJTIyJTJDJTIwaW5wdXRfaWRzKSUwQSUwQW91dHB1dCUyMCUzRCUyMG1vZGVsKGlucHV0X2lkcyklMEFwcmludCglMjJMb2dpdHMlM0ElMjIlMkMlMjBvdXRwdXQubG9naXRzKQ==",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)

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

tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)

input_ids = torch.tensor([ids])
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Input IDs:&quot;</span>, input_ids)

output = model(input_ids)
<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;Logits:&quot;</span>, output.logits)`,wrap:!1}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function Ys(o){let s,a;return s=new w({props:{code:"SW5wdXQlMjBJRHMlM0ElMjB0Zi5UZW5zb3IoJTBBJTVCJTVCJTIwMTA0NSUyMCUyMDEwMDUlMjAlMjAyMzEwJTIwJTIwMjA0MiUyMCUyMDM0MDMlMjAlMjAyMDA1JTIwJTIwMTAzNyUyMDE3NjYyJTIwMTIxNzIlMjAlMjAyNjA3JTIwJTIwMjAyNiUyMCUyMDI4NzglMEElMjAlMjAlMjAyMTY2JTIwJTIwMTAxMiU1RCU1RCUyQyUyMHNoYXBlJTNEKDElMkMlMjAxNCklMkMlMjBkdHlwZSUzRGludDMyKSUwQUxvZ2l0cyUzQSUyMHRmLlRlbnNvciglNUIlNUItMi43Mjc2MjA4JTIwJTIwMi44Nzg5Mzc3JTVEJTVEJTJDJTIwc2hhcGUlM0QoMSUyQyUyMDIpJTJDJTIwZHR5cGUlM0RmbG9hdDMyKQ==",highlighted:`Input IDs: tf.Tensor(
[[ <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>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">14</span>), dtype=int32)
Logits: tf.Tensor([[-<span class="hljs-number">2.7276208</span>  <span class="hljs-number">2.8789377</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function qs(o){let s,a;return s=new w({props:{code:"SW5wdXQlMjBJRHMlM0ElMjAlNUIlNUIlMjAxMDQ1JTJDJTIwJTIwMTAwNSUyQyUyMCUyMDIzMTAlMkMlMjAlMjAyMDQyJTJDJTIwJTIwMzQwMyUyQyUyMCUyMDIwMDUlMkMlMjAlMjAxMDM3JTJDJTIwMTc2NjIlMkMlMjAxMjE3MiUyQyUyMCUyMDI2MDclMkMlMjAyMDI2JTJDJTIwJTIwMjg3OCUyQyUyMCUyMDIxNjYlMkMlMjAlMjAxMDEyJTVEJTVEJTBBTG9naXRzJTNBJTIwJTVCJTVCLTIuNzI3NiUyQyUyMCUyMDIuODc4OSU1RCU1RA==",highlighted:`Input IDs: [[ <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>]]
Logits: [[-<span class="hljs-number">2.7276</span>,  <span class="hljs-number">2.8789</span>]]`,wrap:!1}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){y(s,e,r),a=!0},i(e){a||(m(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){f(s,e)}}}function Ls(o){let s,a="✏️ <strong>Попробуйте!</strong> Преобразуйте этот список <code>batched_ids</code> в тензор и пропустите его через вашу модель. Проверьте, что вы получаете те же логиты, что и раньше (но дважды)!";return{c(){s=d("p"),s.innerHTML=a},l(e){s=J(e,"P",{"data-svelte-h":!0}),T(s)!=="svelte-uxsvrw"&&(s.innerHTML=a)},m(e,r){M(e,s,r)},p:$s,d(e){e&&p(s)}}}function Ks(o){let s,a,e,r;return s=new w({props:{code:"bW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UxX2lkcyUyMCUzRCUyMCU1QiU1QjIwMCUyQyUyMDIwMCUyQyUyMDIwMCU1RCU1RCUwQXNlcXVlbmNlMl9pZHMlMjAlM0QlMjAlNUIlNUIyMDAlMkMlMjAyMDAlNUQlNUQlMEFiYXRjaGVkX2lkcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCU1QjIwMCUyQyUyMDIwMCUyQyUyMDIwMCU1RCUyQyUwQSUyMCUyMCUyMCUyMCU1QjIwMCUyQyUyMDIwMCUyQyUyMHRva2VuaXplci5wYWRfdG9rZW5faWQlNUQlMkMlMEElNUQlMEElMEFwcmludChtb2RlbCh0Zi5jb25zdGFudChzZXF1ZW5jZTFfaWRzKSkubG9naXRzKSUwQXByaW50KG1vZGVsKHRmLmNvbnN0YW50KHNlcXVlbmNlMl9pZHMpKS5sb2dpdHMpJTBBcHJpbnQobW9kZWwodGYuY29uc3RhbnQoYmF0Y2hlZF9pZHMpKS5sb2dpdHMp",highlighted:`model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)

sequence1_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
sequence2_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
batched_ids = [
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]

<span class="hljs-built_in">print</span>(model(tf.constant(sequence1_ids)).logits)
<span class="hljs-built_in">print</span>(model(tf.constant(sequence2_ids)).logits)
<span class="hljs-built_in">print</span>(model(tf.constant(batched_ids)).logits)`,wrap:!1}}),e=new w({props:{code:"dGYuVGVuc29yKCU1QiU1QiUyMDEuNTY5MzY3OCUyMC0xLjM4OTQ1ODElNUQlNUQlMkMlMjBzaGFwZSUzRCgxJTJDJTIwMiklMkMlMjBkdHlwZSUzRGZsb2F0MzIpJTBBdGYuVGVuc29yKCU1QiU1QiUyMDAuNTgwMzAwNSUyMCUyMC0wLjQxMjUyNDI4JTVEJTVEJTJDJTIwc2hhcGUlM0QoMSUyQyUyMDIpJTJDJTIwZHR5cGUlM0RmbG9hdDMyKSUwQXRmLlRlbnNvciglMEElNUIlNUIlMjAxLjU2OTM2ODElMjAtMS4zODk0NTgyJTVEJTBBJTIwJTVCJTIwMS4zMzczNDg2JTIwLTEuMjE2MzE5MyU1RCU1RCUyQyUyMHNoYXBlJTNEKDIlMkMlMjAyKSUyQyUyMGR0eXBlJTNEZmxvYXQzMik=",highlighted:`tf.Tensor([[ <span class="hljs-number">1.5693678</span> -<span class="hljs-number">1.3894581</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>), dtype=float32)
tf.Tensor([[ <span class="hljs-number">0.5803005</span>  -<span class="hljs-number">0.41252428</span>]], shape=(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>), dtype=float32)
tf.Tensor(
[[ <span class="hljs-number">1.5693681</span> -<span class="hljs-number">1.3894582</span>]
 [ <span class="hljs-number">1.3373486</span> -<span class="hljs-number">1.2163193</span>]], shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function Ps(o){let s,a,e,r;return s=new w({props:{code:"bW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQSUwQXNlcXVlbmNlMV9pZHMlMjAlM0QlMjAlNUIlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlNUQlMEFzZXF1ZW5jZTJfaWRzJTIwJTNEJTIwJTVCJTVCMjAwJTJDJTIwMjAwJTVEJTVEJTBBYmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjB0b2tlbml6ZXIucGFkX3Rva2VuX2lkJTVEJTJDJTBBJTVEJTBBJTBBcHJpbnQobW9kZWwodG9yY2gudGVuc29yKHNlcXVlbmNlMV9pZHMpKS5sb2dpdHMpJTBBcHJpbnQobW9kZWwodG9yY2gudGVuc29yKHNlcXVlbmNlMl9pZHMpKS5sb2dpdHMpJTBBcHJpbnQobW9kZWwodG9yY2gudGVuc29yKGJhdGNoZWRfaWRzKSkubG9naXRzKQ==",highlighted:`model = AutoModelForSequenceClassification.from_pretrained(checkpoint)

sequence1_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
sequence2_ids = [[<span class="hljs-number">200</span>, <span class="hljs-number">200</span>]]
batched_ids = [
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]

<span class="hljs-built_in">print</span>(model(torch.tensor(sequence1_ids)).logits)
<span class="hljs-built_in">print</span>(model(torch.tensor(sequence2_ids)).logits)
<span class="hljs-built_in">print</span>(model(torch.tensor(batched_ids)).logits)`,wrap:!1}}),e=new w({props:{code:"dGVuc29yKCU1QiU1QiUyMDEuNTY5NCUyQyUyMC0xLjM4OTUlNUQlNUQlMkMlMjBncmFkX2ZuJTNEJTNDQWRkbW1CYWNrd2FyZCUzRSklMEF0ZW5zb3IoJTVCJTVCJTIwMC41ODAzJTJDJTIwLTAuNDEyNSU1RCU1RCUyQyUyMGdyYWRfZm4lM0QlM0NBZGRtbUJhY2t3YXJkJTNFKSUwQXRlbnNvciglNUIlNUIlMjAxLjU2OTQlMkMlMjAtMS4zODk1JTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwMS4zMzczJTJDJTIwLTEuMjE2MyU1RCU1RCUyQyUyMGdyYWRfZm4lM0QlM0NBZGRtbUJhY2t3YXJkJTNFKQ==",highlighted:`tensor([[ <span class="hljs-number">1.5694</span>, -<span class="hljs-number">1.3895</span>]], grad_fn=&lt;AddmmBackward&gt;)
tensor([[ <span class="hljs-number">0.5803</span>, -<span class="hljs-number">0.4125</span>]], grad_fn=&lt;AddmmBackward&gt;)
tensor([[ <span class="hljs-number">1.5694</span>, -<span class="hljs-number">1.3895</span>],
        [ <span class="hljs-number">1.3373</span>, -<span class="hljs-number">1.2163</span>]], grad_fn=&lt;AddmmBackward&gt;)`,wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function Os(o){let s,a,e,r;return s=new w({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjB0b2tlbml6ZXIucGFkX3Rva2VuX2lkJTVEJTJDJTBBJTVEJTBBJTBBYXR0ZW50aW9uX21hc2slMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDAlNUQlMkMlMEElNUQlMEElMEFvdXRwdXRzJTIwJTNEJTIwbW9kZWwodGYuY29uc3RhbnQoYmF0Y2hlZF9pZHMpJTJDJTIwYXR0ZW50aW9uX21hc2slM0R0Zi5jb25zdGFudChhdHRlbnRpb25fbWFzaykpJTBBcHJpbnQob3V0cHV0cy5sb2dpdHMp",highlighted:`batched_ids = [
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]

attention_mask = [
    [<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>],
]

outputs = model(tf.constant(batched_ids), attention_mask=tf.constant(attention_mask))
<span class="hljs-built_in">print</span>(outputs.logits)`,wrap:!1}}),e=new w({props:{code:"dGYuVGVuc29yKCUwQSU1QiU1QiUyMDEuNTY5MzY4MSUyMCUyMC0xLjM4OTQ1ODIlMjAlNUQlMEElMjAlNUIlMjAwLjU4MDMwMjElMjAlMjAtMC40MTI1MjU4NiU1RCU1RCUyQyUyMHNoYXBlJTNEKDIlMkMlMjAyKSUyQyUyMGR0eXBlJTNEZmxvYXQzMik=",highlighted:`tf.Tensor(
[[ <span class="hljs-number">1.5693681</span>  -<span class="hljs-number">1.3894582</span> ]
 [ <span class="hljs-number">0.5803021</span>  -<span class="hljs-number">0.41252586</span>]], shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function ln(o){let s,a,e,r;return s=new w({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjB0b2tlbml6ZXIucGFkX3Rva2VuX2lkJTVEJTJDJTBBJTVEJTBBJTBBYXR0ZW50aW9uX21hc2slMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDAlNUQlMkMlMEElNUQlMEElMEFvdXRwdXRzJTIwJTNEJTIwbW9kZWwodG9yY2gudGVuc29yKGJhdGNoZWRfaWRzKSUyQyUyMGF0dGVudGlvbl9tYXNrJTNEdG9yY2gudGVuc29yKGF0dGVudGlvbl9tYXNrKSklMEFwcmludChvdXRwdXRzLmxvZ2l0cyk=",highlighted:`batched_ids = [
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, tokenizer.pad_token_id],
]

attention_mask = [
    [<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>],
]

outputs = model(torch.tensor(batched_ids), attention_mask=torch.tensor(attention_mask))
<span class="hljs-built_in">print</span>(outputs.logits)`,wrap:!1}}),e=new w({props:{code:"dGVuc29yKCU1QiU1QiUyMDEuNTY5NCUyQyUyMC0xLjM4OTUlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjAwLjU4MDMlMkMlMjAtMC40MTI1JTVEJTVEJTJDJTIwZ3JhZF9mbiUzRCUzQ0FkZG1tQmFja3dhcmQlM0Up",highlighted:`tensor([[ <span class="hljs-number">1.5694</span>, -<span class="hljs-number">1.3895</span>],
        [ <span class="hljs-number">0.5803</span>, -<span class="hljs-number">0.4125</span>]], grad_fn=&lt;AddmmBackward&gt;)`,wrap:!1}}),{c(){b(s.$$.fragment),a=i(),b(e.$$.fragment)},l(n){j(s.$$.fragment,n),a=u(n),j(e.$$.fragment,n)},m(n,U){y(s,n,U),M(n,a,U),y(e,n,U),r=!0},i(n){r||(m(s.$$.fragment,n),m(e.$$.fragment,n),r=!0)},o(n){c(s.$$.fragment,n),c(e.$$.fragment,n),r=!1},d(n){n&&p(a),f(s,n),f(e,n)}}}function en(o){let s,a="✏️ <strong>Попробуйте!</strong> Примените токенизацию вручную к двум предложениям, использованным в разделе 2 (“I’ve been waiting for a HuggingFace course my whole life.” и “I hate this so much!”). Пропустите их через модель и проверьте, что вы получите те же логиты, что и в разделе 2. Теперь объедините их в батч с использованием токена дополнения, а затем создайте соответствующую маску внимания. Проверьте, что при прохождении через модель вы получаете те же результаты!";return{c(){s=d("p"),s.innerHTML=a},l(e){s=J(e,"P",{"data-svelte-h":!0}),T(s)!=="svelte-dbhizt"&&(s.innerHTML=a)},m(e,r){M(e,s,r)},p:$s,d(e){e&&p(s)}}}function sn(o){let s,a,e,r,n,U,D,Bl,S,Dl,h,k,Ql,_,$,El,F,Ne="В предыдущем разделе мы рассмотрели самый простой вариант использования: проведение инференса на одной последовательности небольшой длины. Однако уже сейчас возникают некоторые вопросы:",Sl,H,ge="<li>Как нам работать с несколькими последовательностями?</li> <li>Как нам работать с несколькими последовательностями <em>разной длины</em>?</li> <li>Являются ли индексы словаря единственными входными данными, которые позволяют модели работать хорошо?</li> <li>Существует ли такая вещь, как слишком длинная последовательность?</li>",Fl,x,We="Давайте посмотрим, какие проблемы возникают в связи с этими вопросами и как их можно решить с помощью 🤗 Transformers API.",Hl,Y,xl,q,Re="В предыдущем упражнении вы видели, как последовательности преобразуются в списки чисел. Давайте преобразуем этот список чисел в тензор и передадим его в модель:",Yl,C,I,Nl,L,Ge="О нет! Почему это не удалось? Мы следовали шагам из конвейера в разделе 2.",ql,K,ze="Проблема в том, что мы отправили в модель одну последовательность, в то время как 🤗 модели Transformers по умолчанию ожидают несколько предложений. Здесь мы попытались сделать все то, что токенизатор делал за кулисами, когда мы применяли его к <code>последовательности</code>. Но если вы приглядитесь, то увидите, что токенизатор не просто преобразовал список входных идентификаторов в тензор, а добавил к нему еще одно измерение:",Ll,V,A,gl,P,ve="Давайте попробуем еще раз и добавим новое измерение:",Kl,Z,Q,Wl,O,Xe="Мы выводим входные идентификаторы, а также результирующие логиты - вот результат:",Pl,E,N,Rl,ll,Be="<em>Батчинг</em> - это отправка нескольких предложений через модель одновременно. Если у вас есть только одно предложение, вы можете просто создать батч с одной последовательностью:",Ol,el,le,sl,De="Это батч из двух одинаковых последовательностей!",ee,z,se,nl,Se="Батчинг позволяет модели работать, когда вы подаете ей несколько последовательностей. Использование нескольких последовательностей так же просто, как и создание батча с одной последовательностью. Однако есть и вторая проблема. Когда вы пытаетесь собрать в батч два (или более) предложения, они могут быть разной длины. Если вы когда-нибудь работали с тензорами, то знаете, что они должны иметь прямоугольную форму, поэтому вы не сможете напрямую преобразовать список входных идентификаторов в тензор. Чтобы обойти эту проблему, мы обычно прибегаем к <em>дополнению (pad)</em> входных данных.",ne,tl,te,al,Fe="Следующий список списков не может быть преобразован в тензор:",ae,pl,pe,Ml,He="Чтобы обойти эту проблему, мы будем использовать <em>дополнение (padding)</em>, чтобы придать тензорам прямоугольную форму. Дополнение обеспечивает одинаковую длину всех предложений, добавляя специальное слово <em>токен дополнения</em> к предложениям с меньшим количеством значений. Например, если у вас есть 10 предложений с 10 словами и 1 предложение с 20 словами, то при дополнении все предложения будут состоять из 20 слов. В нашем примере результирующий тензор выглядит следующим образом:",Me,rl,re,il,xe="Идентификатор токена дополнения можно найти в <code>tokenizer.pad_token_id</code>. Давайте используем его и отправим наши два предложения в модель по отдельности и батчем:",ie,g,W,Gl,ul,Ye="Что-то не так с логитами в наших батчах: во втором ряду должны быть те же логиты, что и для второго предложения, но мы получили совершенно другие значения!",ue,cl,qe="Это связано с тем, что ключевой особенностью моделей Transformer являются слои внимания (attention layers), которые <em>контекстуализируют</em> каждый токен. Они учитывают токены дополнений, так как рассматривают все токены последовательности. Чтобы получить одинаковый результат при прохождении через модель отдельных предложений разной длины или при прохождении батча с одинаковыми предложениями и дополнениями, нам нужно указать слоям внимания игнорировать дополняющие токены. Для этого используется маска внимания (attention mask).",ce,ml,me,ol,Le="<em>Маски внимания (Attention masks)</em> - это тензоры той же формы, что и тензор входных идентификаторов, заполненные 0 и 1: 1 означает, что соответствующие токены должны “привлекать внимание”, а 0 означает, что соответствующие токены не должны “привлекать внимание” (т.е. должны игнорироваться слоями внимания модели).",oe,bl,Ke="Дополним предыдущий пример маской внимания:",be,R,G,zl,jl,Pe="Теперь мы получим такие же логиты для второго предложения в батче.",je,yl,Oe="Обратите внимание, что последнее значение второй последовательности - это идентификатор дополнения (padding ID), который в маске внимания имеет значение 0.",ye,v,fe,fl,Ue,Ul,ls="В моделях Transformer существует ограничение на длину последовательностей, которые мы можем передавать моделям. Большинство моделей работают с последовательностями длиной до 512 или 1024 токенов и терпят крах при необходимости обработки более длинных последовательностей. Есть два решения этой проблемы:",de,dl,es="<li>Использовать модель с большей поддерживаемой длиной последовательности.</li> <li>Усечение (truncate) последовательностей.</li>",Je,Jl,ss='Модели имеют разную поддерживаемую длину последовательности, а некоторые специализируются на работе с очень длинными последовательностями. Одним из примеров является <a href="https://huggingface.co/docs/transformers/model_doc/longformer" rel="nofollow">Longformer</a>, а другим - <a href="https://huggingface.co/docs/transformers/model_doc/led" rel="nofollow">LED</a>. Если вы работаете над задачей, требующей очень длинных последовательностей, мы рекомендуем вам обратить внимание на эти модели.',Te,Tl,ns="В противном случае мы рекомендуем использовать усечение последовательностей, указав параметр <code>max_sequence_length</code>:",we,wl,he,hl,ke,vl,_e;n=new Rs({props:{fw:o[0]}}),D=new gs({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),S=new Xl({props:{title:"Обработка нескольких последовательностей",local:"handling-multiple-sequences",headingTag:"h1"}});const ts=[zs,Gs],kl=[];function as(l,t){return l[0]==="pt"?0:1}h=as(o),k=kl[h]=ts[h](o);const ps=[Xs,vs],_l=[];function Ms(l,t){return l[0]==="pt"?0:1}_=Ms(o),$=_l[_]=ps[_](o),Y=new Xl({props:{title:"Модели ожидают батч входов",local:"models-expect-a-batch-of-inputs",headingTag:"h2"}});const rs=[Ds,Bs],$l=[];function is(l,t){return l[0]==="pt"?0:1}C=is(o),I=$l[C]=rs[C](o);const us=[Fs,Ss],Cl=[];function cs(l,t){return l[0]==="pt"?0:1}V=cs(o),A=Cl[V]=us[V](o);const ms=[xs,Hs],Il=[];function os(l,t){return l[0]==="pt"?0:1}Z=os(o),Q=Il[Z]=ms[Z](o);const bs=[qs,Ys],Vl=[];function js(l,t){return l[0]==="pt"?0:1}E=js(o),N=Vl[E]=bs[E](o),el=new w({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUJpZHMlMkMlMjBpZHMlNUQ=",highlighted:'<span class="hljs-attr">batched_ids</span> = [ids, ids]',wrap:!1}}),z=new _s({props:{$$slots:{default:[Ls]},$$scope:{ctx:o}}}),tl=new Xl({props:{title:"Дополнение входов",local:"padding-the-inputs",headingTag:"h2"}}),pl=new w({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlMkMlMjAyMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIyMDAlMkMlMjAyMDAlNUQlMEElNUQ=",highlighted:`batched_ids = [
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>]
]`,wrap:!1}}),rl=new w({props:{code:"cGFkZGluZ19pZCUyMCUzRCUyMDEwMCUwQSUwQWJhdGNoZWRfaWRzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTVCMjAwJTJDJTIwMjAwJTJDJTIwMjAwJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTVCMjAwJTJDJTIwMjAwJTJDJTIwcGFkZGluZ19pZCU1RCUyQyUwQSU1RA==",highlighted:`padding_id = <span class="hljs-number">100</span>

batched_ids = [
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>],
    [<span class="hljs-number">200</span>, <span class="hljs-number">200</span>, padding_id],
]`,wrap:!1}});const ys=[Ps,Ks],Al=[];function fs(l,t){return l[0]==="pt"?0:1}g=fs(o),W=Al[g]=ys[g](o),ml=new Xl({props:{title:"Маски внимания",local:"attention-masks",headingTag:"h2"}});const Us=[ln,Os],Zl=[];function ds(l,t){return l[0]==="pt"?0:1}return R=ds(o),G=Zl[R]=Us[R](o),v=new _s({props:{$$slots:{default:[en]},$$scope:{ctx:o}}}),fl=new Xl({props:{title:"Более длинные последовательности",local:"longer-sequences",headingTag:"h2"}}),wl=new w({props:{code:"c2VxdWVuY2UlMjAlM0QlMjBzZXF1ZW5jZSU1QiUzQW1heF9zZXF1ZW5jZV9sZW5ndGglNUQ=",highlighted:"sequence = sequence[:max_sequence_length]",wrap:!1}}),hl=new Ws({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ru/chapter2/5.mdx"}}),{c(){s=d("meta"),a=i(),e=d("p"),r=i(),b(n.$$.fragment),U=i(),b(D.$$.fragment),Bl=i(),b(S.$$.fragment),Dl=i(),k.c(),Ql=i(),$.c(),El=i(),F=d("p"),F.textContent=Ne,Sl=i(),H=d("ul"),H.innerHTML=ge,Fl=i(),x=d("p"),x.textContent=We,Hl=i(),b(Y.$$.fragment),xl=i(),q=d("p"),q.textContent=Re,Yl=i(),I.c(),Nl=i(),L=d("p"),L.textContent=Ge,ql=i(),K=d("p"),K.innerHTML=ze,Ll=i(),A.c(),gl=i(),P=d("p"),P.textContent=ve,Kl=i(),Q.c(),Wl=i(),O=d("p"),O.textContent=Xe,Pl=i(),N.c(),Rl=i(),ll=d("p"),ll.innerHTML=Be,Ol=i(),b(el.$$.fragment),le=i(),sl=d("p"),sl.textContent=De,ee=i(),b(z.$$.fragment),se=i(),nl=d("p"),nl.innerHTML=Se,ne=i(),b(tl.$$.fragment),te=i(),al=d("p"),al.textContent=Fe,ae=i(),b(pl.$$.fragment),pe=i(),Ml=d("p"),Ml.innerHTML=He,Me=i(),b(rl.$$.fragment),re=i(),il=d("p"),il.innerHTML=xe,ie=i(),W.c(),Gl=i(),ul=d("p"),ul.textContent=Ye,ue=i(),cl=d("p"),cl.innerHTML=qe,ce=i(),b(ml.$$.fragment),me=i(),ol=d("p"),ol.innerHTML=Le,oe=i(),bl=d("p"),bl.textContent=Ke,be=i(),G.c(),zl=i(),jl=d("p"),jl.textContent=Pe,je=i(),yl=d("p"),yl.textContent=Oe,ye=i(),b(v.$$.fragment),fe=i(),b(fl.$$.fragment),Ue=i(),Ul=d("p"),Ul.textContent=ls,de=i(),dl=d("ul"),dl.innerHTML=es,Je=i(),Jl=d("p"),Jl.innerHTML=ss,Te=i(),Tl=d("p"),Tl.innerHTML=ns,we=i(),b(wl.$$.fragment),he=i(),b(hl.$$.fragment),ke=i(),vl=d("p"),this.h()},l(l){const t=Es("svelte-u9bgzb",document.head);s=J(t,"META",{name:!0,content:!0}),t.forEach(p),a=u(l),e=J(l,"P",{}),hs(e).forEach(p),r=u(l),j(n.$$.fragment,l),U=u(l),j(D.$$.fragment,l),Bl=u(l),j(S.$$.fragment,l),Dl=u(l),k.l(l),Ql=u(l),$.l(l),El=u(l),F=J(l,"P",{"data-svelte-h":!0}),T(F)!=="svelte-ikgr2i"&&(F.textContent=Ne),Sl=u(l),H=J(l,"UL",{"data-svelte-h":!0}),T(H)!=="svelte-p2p0e"&&(H.innerHTML=ge),Fl=u(l),x=J(l,"P",{"data-svelte-h":!0}),T(x)!=="svelte-98bx90"&&(x.textContent=We),Hl=u(l),j(Y.$$.fragment,l),xl=u(l),q=J(l,"P",{"data-svelte-h":!0}),T(q)!=="svelte-18ypb6e"&&(q.textContent=Re),Yl=u(l),I.l(l),Nl=u(l),L=J(l,"P",{"data-svelte-h":!0}),T(L)!=="svelte-144jsih"&&(L.textContent=Ge),ql=u(l),K=J(l,"P",{"data-svelte-h":!0}),T(K)!=="svelte-1k77vdn"&&(K.innerHTML=ze),Ll=u(l),A.l(l),gl=u(l),P=J(l,"P",{"data-svelte-h":!0}),T(P)!=="svelte-dmjb59"&&(P.textContent=ve),Kl=u(l),Q.l(l),Wl=u(l),O=J(l,"P",{"data-svelte-h":!0}),T(O)!=="svelte-1nnt99"&&(O.textContent=Xe),Pl=u(l),N.l(l),Rl=u(l),ll=J(l,"P",{"data-svelte-h":!0}),T(ll)!=="svelte-1ptjmnf"&&(ll.innerHTML=Be),Ol=u(l),j(el.$$.fragment,l),le=u(l),sl=J(l,"P",{"data-svelte-h":!0}),T(sl)!=="svelte-1xqu6rg"&&(sl.textContent=De),ee=u(l),j(z.$$.fragment,l),se=u(l),nl=J(l,"P",{"data-svelte-h":!0}),T(nl)!=="svelte-1x76014"&&(nl.innerHTML=Se),ne=u(l),j(tl.$$.fragment,l),te=u(l),al=J(l,"P",{"data-svelte-h":!0}),T(al)!=="svelte-nbgyfx"&&(al.textContent=Fe),ae=u(l),j(pl.$$.fragment,l),pe=u(l),Ml=J(l,"P",{"data-svelte-h":!0}),T(Ml)!=="svelte-19psb6t"&&(Ml.innerHTML=He),Me=u(l),j(rl.$$.fragment,l),re=u(l),il=J(l,"P",{"data-svelte-h":!0}),T(il)!=="svelte-vcf2iw"&&(il.innerHTML=xe),ie=u(l),W.l(l),Gl=u(l),ul=J(l,"P",{"data-svelte-h":!0}),T(ul)!=="svelte-lq6aki"&&(ul.textContent=Ye),ue=u(l),cl=J(l,"P",{"data-svelte-h":!0}),T(cl)!=="svelte-1odjoq1"&&(cl.innerHTML=qe),ce=u(l),j(ml.$$.fragment,l),me=u(l),ol=J(l,"P",{"data-svelte-h":!0}),T(ol)!=="svelte-19vvspo"&&(ol.innerHTML=Le),oe=u(l),bl=J(l,"P",{"data-svelte-h":!0}),T(bl)!=="svelte-1mwnjcg"&&(bl.textContent=Ke),be=u(l),G.l(l),zl=u(l),jl=J(l,"P",{"data-svelte-h":!0}),T(jl)!=="svelte-386tap"&&(jl.textContent=Pe),je=u(l),yl=J(l,"P",{"data-svelte-h":!0}),T(yl)!=="svelte-11ffhny"&&(yl.textContent=Oe),ye=u(l),j(v.$$.fragment,l),fe=u(l),j(fl.$$.fragment,l),Ue=u(l),Ul=J(l,"P",{"data-svelte-h":!0}),T(Ul)!=="svelte-mjg3yg"&&(Ul.textContent=ls),de=u(l),dl=J(l,"UL",{"data-svelte-h":!0}),T(dl)!=="svelte-u5jj5o"&&(dl.innerHTML=es),Je=u(l),Jl=J(l,"P",{"data-svelte-h":!0}),T(Jl)!=="svelte-6nsbgo"&&(Jl.innerHTML=ss),Te=u(l),Tl=J(l,"P",{"data-svelte-h":!0}),T(Tl)!=="svelte-10uunb0"&&(Tl.innerHTML=ns),we=u(l),j(wl.$$.fragment,l),he=u(l),j(hl.$$.fragment,l),ke=u(l),vl=J(l,"P",{}),hs(vl).forEach(p),this.h()},h(){ks(s,"name","hf:doc:metadata"),ks(s,"content",nn)},m(l,t){Ns(document.head,s),M(l,a,t),M(l,e,t),M(l,r,t),y(n,l,t),M(l,U,t),y(D,l,t),M(l,Bl,t),y(S,l,t),M(l,Dl,t),kl[h].m(l,t),M(l,Ql,t),_l[_].m(l,t),M(l,El,t),M(l,F,t),M(l,Sl,t),M(l,H,t),M(l,Fl,t),M(l,x,t),M(l,Hl,t),y(Y,l,t),M(l,xl,t),M(l,q,t),M(l,Yl,t),$l[C].m(l,t),M(l,Nl,t),M(l,L,t),M(l,ql,t),M(l,K,t),M(l,Ll,t),Cl[V].m(l,t),M(l,gl,t),M(l,P,t),M(l,Kl,t),Il[Z].m(l,t),M(l,Wl,t),M(l,O,t),M(l,Pl,t),Vl[E].m(l,t),M(l,Rl,t),M(l,ll,t),M(l,Ol,t),y(el,l,t),M(l,le,t),M(l,sl,t),M(l,ee,t),y(z,l,t),M(l,se,t),M(l,nl,t),M(l,ne,t),y(tl,l,t),M(l,te,t),M(l,al,t),M(l,ae,t),y(pl,l,t),M(l,pe,t),M(l,Ml,t),M(l,Me,t),y(rl,l,t),M(l,re,t),M(l,il,t),M(l,ie,t),Al[g].m(l,t),M(l,Gl,t),M(l,ul,t),M(l,ue,t),M(l,cl,t),M(l,ce,t),y(ml,l,t),M(l,me,t),M(l,ol,t),M(l,oe,t),M(l,bl,t),M(l,be,t),Zl[R].m(l,t),M(l,zl,t),M(l,jl,t),M(l,je,t),M(l,yl,t),M(l,ye,t),y(v,l,t),M(l,fe,t),y(fl,l,t),M(l,Ue,t),M(l,Ul,t),M(l,de,t),M(l,dl,t),M(l,Je,t),M(l,Jl,t),M(l,Te,t),M(l,Tl,t),M(l,we,t),y(wl,l,t),M(l,he,t),y(hl,l,t),M(l,ke,t),M(l,vl,t),_e=!0},p(l,[t]){const Js={};t&1&&(Js.fw=l[0]),n.$set(Js);let $e=h;h=as(l),h!==$e&&(B(),c(kl[$e],1,1,()=>{kl[$e]=null}),X(),k=kl[h],k||(k=kl[h]=ts[h](l),k.c()),m(k,1),k.m(Ql.parentNode,Ql));let Ce=_;_=Ms(l),_!==Ce&&(B(),c(_l[Ce],1,1,()=>{_l[Ce]=null}),X(),$=_l[_],$||($=_l[_]=ps[_](l),$.c()),m($,1),$.m(El.parentNode,El));let Ie=C;C=is(l),C!==Ie&&(B(),c($l[Ie],1,1,()=>{$l[Ie]=null}),X(),I=$l[C],I||(I=$l[C]=rs[C](l),I.c()),m(I,1),I.m(Nl.parentNode,Nl));let Ve=V;V=cs(l),V!==Ve&&(B(),c(Cl[Ve],1,1,()=>{Cl[Ve]=null}),X(),A=Cl[V],A||(A=Cl[V]=us[V](l),A.c()),m(A,1),A.m(gl.parentNode,gl));let Ae=Z;Z=os(l),Z!==Ae&&(B(),c(Il[Ae],1,1,()=>{Il[Ae]=null}),X(),Q=Il[Z],Q||(Q=Il[Z]=ms[Z](l),Q.c()),m(Q,1),Q.m(Wl.parentNode,Wl));let Ze=E;E=js(l),E!==Ze&&(B(),c(Vl[Ze],1,1,()=>{Vl[Ze]=null}),X(),N=Vl[E],N||(N=Vl[E]=bs[E](l),N.c()),m(N,1),N.m(Rl.parentNode,Rl));const Ts={};t&2&&(Ts.$$scope={dirty:t,ctx:l}),z.$set(Ts);let Qe=g;g=fs(l),g!==Qe&&(B(),c(Al[Qe],1,1,()=>{Al[Qe]=null}),X(),W=Al[g],W||(W=Al[g]=ys[g](l),W.c()),m(W,1),W.m(Gl.parentNode,Gl));let Ee=R;R=ds(l),R!==Ee&&(B(),c(Zl[Ee],1,1,()=>{Zl[Ee]=null}),X(),G=Zl[R],G||(G=Zl[R]=Us[R](l),G.c()),m(G,1),G.m(zl.parentNode,zl));const ws={};t&2&&(ws.$$scope={dirty:t,ctx:l}),v.$set(ws)},i(l){_e||(m(n.$$.fragment,l),m(D.$$.fragment,l),m(S.$$.fragment,l),m(k),m($),m(Y.$$.fragment,l),m(I),m(A),m(Q),m(N),m(el.$$.fragment,l),m(z.$$.fragment,l),m(tl.$$.fragment,l),m(pl.$$.fragment,l),m(rl.$$.fragment,l),m(W),m(ml.$$.fragment,l),m(G),m(v.$$.fragment,l),m(fl.$$.fragment,l),m(wl.$$.fragment,l),m(hl.$$.fragment,l),_e=!0)},o(l){c(n.$$.fragment,l),c(D.$$.fragment,l),c(S.$$.fragment,l),c(k),c($),c(Y.$$.fragment,l),c(I),c(A),c(Q),c(N),c(el.$$.fragment,l),c(z.$$.fragment,l),c(tl.$$.fragment,l),c(pl.$$.fragment,l),c(rl.$$.fragment,l),c(W),c(ml.$$.fragment,l),c(G),c(v.$$.fragment,l),c(fl.$$.fragment,l),c(wl.$$.fragment,l),c(hl.$$.fragment,l),_e=!1},d(l){l&&(p(a),p(e),p(r),p(U),p(Bl),p(Dl),p(Ql),p(El),p(F),p(Sl),p(H),p(Fl),p(x),p(Hl),p(xl),p(q),p(Yl),p(Nl),p(L),p(ql),p(K),p(Ll),p(gl),p(P),p(Kl),p(Wl),p(O),p(Pl),p(Rl),p(ll),p(Ol),p(le),p(sl),p(ee),p(se),p(nl),p(ne),p(te),p(al),p(ae),p(pe),p(Ml),p(Me),p(re),p(il),p(ie),p(Gl),p(ul),p(ue),p(cl),p(ce),p(me),p(ol),p(oe),p(bl),p(be),p(zl),p(jl),p(je),p(yl),p(ye),p(fe),p(Ue),p(Ul),p(de),p(dl),p(Je),p(Jl),p(Te),p(Tl),p(we),p(he),p(ke),p(vl)),p(s),f(n,l),f(D,l),f(S,l),kl[h].d(l),_l[_].d(l),f(Y,l),$l[C].d(l),Cl[V].d(l),Il[Z].d(l),Vl[E].d(l),f(el,l),f(z,l),f(tl,l),f(pl,l),f(rl,l),Al[g].d(l),f(ml,l),Zl[R].d(l),f(v,l),f(fl,l),f(wl,l),f(hl,l)}}}const nn='{"title":"Обработка нескольких последовательностей","local":"handling-multiple-sequences","sections":[{"title":"Модели ожидают батч входов","local":"models-expect-a-batch-of-inputs","sections":[],"depth":2},{"title":"Дополнение входов","local":"padding-the-inputs","sections":[],"depth":2},{"title":"Маски внимания","local":"attention-masks","sections":[],"depth":2},{"title":"Более длинные последовательности","local":"longer-sequences","sections":[],"depth":2}],"depth":1}';function tn(o,s,a){let e="pt";return As(()=>{const r=new URLSearchParams(window.location.search);a(0,e=r.get("fw")||"pt")}),[e]}class bn extends Zs{constructor(s){super(),Qs(this,s,tn,sn,Vs,{})}}export{bn as component};
