import{s as Is,o as As,n as gs}from"../chunks/scheduler.37c15a92.js";import{S as Cs,i as Zs,g as d,s as r,r as o,A as Ns,h as U,f as c,c as M,j as Ts,u as b,x as J,k as ws,y as vs,a as p,v as y,t as u,b as X,d as h,w as j,p as B}from"../chunks/index.2bf4358c.js";import{T as ks}from"../chunks/Tip.363c041f.js";import{Y as _s}from"../chunks/Youtube.1e50a667.js";import{C as T}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as $s}from"../chunks/CourseFloatingBanner.06521e8b.js";import{F as Qs}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Gl,E as Vs}from"../chunks/EditOnGithub.8916dc7c.js";function Ws(m){let s,a;return s=new $s({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/vi/chapter2/section5_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter2/section5_tf.ipynb"}]}}),{c(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Es(m){let s,a;return s=new $s({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/vi/chapter2/section5_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter2/section5_pt.ipynb"}]}}),{c(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function zs(m){let s,a;return s=new _s({props:{id:"ROxrFOEbsQE"}}),{c(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Rs(m){let s,a;return s=new _s({props:{id:"M6adb1j2jPI"}}),{c(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Gs(m){let s,a,n,i;return s=new T({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIudG9rZW5pemUoc2VxdWVuY2UpJTBBaWRzJTIwJTNEJTIwdG9rZW5pemVyLmNvbnZlcnRfdG9rZW5zX3RvX2lkcyh0b2tlbnMpJTBBaW5wdXRfaWRzJTIwJTNEJTIwdGYuY29uc3RhbnQoaWRzKSUwQSUyMyUyMFRoaXMlMjBsaW5lJTIwd2lsbCUyMGZhaWwuJTBBbW9kZWwoaW5wdXRfaWRzKQ==",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"># This line will fail.</span>
model(input_ids)`,wrap:!1}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Xs(m){let s,a,n,i;return s=new T({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEFzZXF1ZW5jZSUyMCUzRCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFpbnB1dF9pZHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoaWRzKSUwQSUyMyUyMFRoaXMlMjBsaW5lJTIwd2lsbCUyMGZhaWwuJTBBbW9kZWwoaW5wdXRfaWRzKQ==",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"># This line will fail.</span>
model(input_ids)`,wrap:!1}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Bs(m){let s,a,n,i;return s=new T({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}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Ds(m){let s,a,n,i;return s=new T({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}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function xs(m){let s,a;return s=new T({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(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Hs(m){let s,a;return s=new T({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(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Fs(m){let s,a;return s=new T({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(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Ss(m){let s,a;return s=new T({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(){o(s.$$.fragment)},l(n){b(s.$$.fragment,n)},m(n,i){y(s,n,i),a=!0},i(n){a||(h(s.$$.fragment,n),a=!0)},o(n){u(s.$$.fragment,n),a=!1},d(n){j(s,n)}}}function Ys(m){let s,a="✏️ <strong>Thử nghiệm thôi!</strong> Chuyển đổi danh sách <code>batch_ids</code> này thành một tensor và chuyển nó qua mô hình của bạn. Kiểm tra để đảm bảo rằng bạn có được logit giống như trước đây (nhưng hai lần)!";return{c(){s=d("p"),s.innerHTML=a},l(n){s=U(n,"P",{"data-svelte-h":!0}),J(s)!=="svelte-ov3oz3"&&(s.innerHTML=a)},m(n,i){p(n,s,i)},p:gs,d(n){n&&c(s)}}}function qs(m){let s,a,n,i;return s=new T({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}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Ls(m){let s,a,n,i;return s=new T({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}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Ks(m){let s,a,n,i;return s=new T({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}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Ps(m){let s,a,n,i;return s=new T({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}}),n=new T({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(){o(s.$$.fragment),a=r(),o(n.$$.fragment)},l(t){b(s.$$.fragment,t),a=M(t),b(n.$$.fragment,t)},m(t,f){y(s,t,f),p(t,a,f),y(n,t,f),i=!0},i(t){i||(h(s.$$.fragment,t),h(n.$$.fragment,t),i=!0)},o(t){u(s.$$.fragment,t),u(n.$$.fragment,t),i=!1},d(t){t&&c(a),j(s,t),j(n,t)}}}function Os(m){let s,a="✏️ <strong>Thử nghiệm thôi!</strong> Áp dụng thủ công tokenize cho hai câu được sử dụng trong phần 2 (“I’ve been waiting for a HuggingFace course my whole life.” và “I hate this so much!”). Đưa chúng vào mô hình và kiểm tra xem bạn có nhận được các logit giống như trong phần 2 không. Bây giờ, gộp chúng lại với nhau bằng cách sử dụng token đệm, sau đó tạo attention mask thích hợp. Kiểm tra xem bạn có đạt được kết quả tương tự khi đưa qua mô hình không!";return{c(){s=d("p"),s.innerHTML=a},l(n){s=U(n,"P",{"data-svelte-h":!0}),J(s)!=="svelte-15ecf3k"&&(s.innerHTML=a)},m(n,i){p(n,s,i)},p:gs,d(n){n&&c(s)}}}function lt(m){let s,a,n,i,t,f,D,Xl,w,k,Zl,g,_,Nl,x,vn="Trong phần trước, chúng ta đã khám phá các trường hợp sử dụng đơn giản nhất: thực hiện luận suy trên một dãy đơn có độ dài nhỏ. Tuy nhiên, một số câu hỏi được đề cập như:",Bl,H,Qn="<li>Làm thế nào để chúng ta xử lý nhiều chuỗi?</li> <li>Làm thế nào để chúng ta xử lý nhiều chuỗi <em>có độ dài khác nhau</em>?</li> <li>Các chỉ số từ vựng có phải là đầu vào duy nhất cho phép một mô hình hoạt động tốt không?</li> <li>Nếu như một chuỗi quá dài thì sao?</li>",Dl,F,Vn="Hãy xem những câu hỏi này đặt ra những loại vấn đề nào và cách chúng tôi có thể giải quyết chúng bằng cách sử dụng API 🤗 Transformers.",xl,S,Hl,Y,Wn="Trong bài tập trước, bạn đã thấy cách các chuỗi được chuyển thành danh sách các số. Hãy chuyển đổi danh sách các số này thành một tensor và gửi nó đến mô hình:",Fl,$,I,vl,q,En="Ôi không! Tại sao đoạn mã lại không thành công? Chúng ta đã làm theo các bước từ pipeline trong phần 2.",Sl,L,zn="Vấn đề ở đây đó là chúng ta đã gửi một chuỗi đơn cho mô hình, trong khi mô hình 🤗 Transformers mong đợi nhiều câu theo mặc định. Ở đây, chúng ta đã cố gắng thực hiện mọi thứ mà tokenizer đã làm ở phía sau khi áp dụng nó vào một <code>chuỗi</code>, nhưng nếu bạn nhìn kỹ, bạn sẽ thấy rằng nó không chỉ chuyển đổi danh sách ID đầu vào thành một tensor, nó  còn thêm một chiều lên trên:",Yl,A,C,Ql,K,Rn="Hãy cũng thử lại và thêm một chiều mới:",ql,Z,N,Vl,P,Gn="Ta in ra các ID đầu vào cũng như kết quả logit như sau:",Ll,v,Q,Wl,O,Xn="<em>Batching</em> hay <em>Lô</em> là hành động gửi nhiều câu qua mô hình, tất cả cùng một lúc. Nếu bạn chỉ có một câu, bạn chỉ có thể xây dựng một lô với một chuỗi duy nhất:",Kl,ll,Pl,nl,Bn="Đây là một lô chứa hai chuỗi giống nhau!",Ol,R,ln,sl,Dn="Việc phân phối lô cho phép mô hình hoạt động khi bạn đưa vào nhiều câu. Việc sử dụng nhiều chuỗi cũng đơn giản như xây dựng một lô với một chuỗi duy nhất. Tuy nhiên, có một vấn đề thứ hai. Khi bạn cố gắng ghép hai (hoặc nhiều) câu lại với nhau, chúng có thể có độ dài khác nhau. Nếu bạn đã từng làm việc với tensor trước đây, bạn biết rằng chúng cần có dạng hình chữ nhật, vì vậy bạn sẽ không thể chuyển đổi trực tiếp danh sách ID đầu vào thành tensor. Để giải quyết vấn đề này, chúng tôi thường <em>đệm</em> các đầu vào.",nn,tl,sn,el,xn="Danh sách các danh sách dưới đây không thể chuyển đổi thành một tensor:",tn,al,en,cl,Hn="Để giải quyết vấn đề này, chúng ta sẽ sử dụng <em>đệm</em> để làm cho các tensor của chúng ta có hình chữ nhật. Đệm đảm bảo tất cả các câu của chúng ta có cùng độ dài bằng cách thêm một từ đặc biệt được gọi là <em>padding token</em> hay <em>token được đệm thêm</em> vào các câu có ít giá trị hơn. Ví dụ: nếu bạn có 10 câu 10 từ và 1 câu 20 từ, phần đệm sẽ đảm bảo tất cả các câu có 20 từ. Trong ví dụ của chúng tôi, tensor kết quả trông giống như sau:",an,pl,cn,il,Fn="ID của token đệm có thể tìm thấy ở <code>tokenizer.pad_token_id</code>. Hãy sử dụng nó và gửi hai câu của chúng ta thông qua mô hình riêng lẻ và theo lô với nhau:",pn,V,W,El,rl,Sn="Có điều gì đó không ổn với các logit trong các dự đoán theo lô của chúng ta: hàng thứ hai phải giống với logit cho câu thứ hai, nhưng chúng ta có các giá trị hoàn toàn khác nhau!",rn,Ml,Yn="Điều này là do tính năng chính của các mô hình Transformer là các lớp attention đã <em>ngữ cảnh hóa</em> mỗi token. Chúng sẽ tính đến các padding token vì chúng tham gia vào tất cả các token của một chuỗi. Để có được kết quả tương tự khi chuyển các câu riêng lẻ có độ dài khác nhau qua mô hình hoặc khi chuyển một lô với các câu và phần đệm giống nhau được áp dụng, chúng ta cần yêu cầu các lớp attention đó bỏ qua các thẻ đệm. Điều này được thực hiện bằng cách sử dụng attention mask.",Mn,ul,un,hl,qn="<em>Attention masks</em> là các tensor có hình dạng chính xác như tensor ID đầu vào, được lấp đầy bởi 0 và 1: 1 cho biết các tokenn tương ứng nên được tham gia và các số 0 cho biết các token tương ứng không được tham gia (tức là chúng phải bị bỏ qua bởi các lớp attention của mô hình).",hn,ml,Ln="Hãy hoàn thành ví dụ trước với một attention mask:",mn,E,z,zl,ol,Kn="Bây giờ chúng ta nhận được các logit tương tự cho câu thứ hai trong lô.",on,bl,Pn="Lưu ý cách giá trị cuối cùng của chuỗi thứ hai là ID đệm, là giá trị 0 trong attention mask.",bn,G,yn,yl,jn,jl,On="Với các mô hình Transformer, có một giới hạn về độ dài của các chuỗi mà chúng tôi có thể vượt qua các mô hình. Hầu hết các mô hình xử lý chuỗi lên đến 512 hoặc 1024 token và sẽ bị lỗi khi được yêu cầu xử lý chuỗi dài hơn. Có hai giải pháp cho vấn đề này:",fn,fl,ls="<li>Sử dụng mô hình có độ dài chuỗi được hỗ trợ dài hơn.</li> <li>Cắt ngắn chuỗi của bạn.</li>",dn,dl,ns='Các mô hình có độ dài chuỗi được hỗ trợ khác nhau và một số mô hình chuyên xử lý các trình tự rất dài. <a href="https://huggingface.co/transformers/model_doc/longformer.html" rel="nofollow">Longformer</a> là một ví dụ và một ví dụ khác là <a href="https://huggingface.co/transformers/model_doc/led.html" rel="nofollow">LED</a>. Nếu bạn đang thực hiện một công việc đòi hỏi trình tự rất dài, chúng tôi khuyên bạn nên xem các mô hình đó.',Un,Ul,ss="Nếu không, chúng tôi khuyên bạn nên cắt bớt các chuỗi của mình bằng cách chỉ định tham số <code>max_sequence_length</code>:",Jn,Jl,Tn,Tl,wn,Rl,kn;t=new Qs({props:{fw:m[0]}}),D=new Gl({props:{title:"Xử lý đa chuỗi",local:"xử-lý-đa-chuỗi",headingTag:"h1"}});const ts=[Es,Ws],wl=[];function es(l,e){return l[0]==="pt"?0:1}w=es(m),k=wl[w]=ts[w](m);const as=[Rs,zs],kl=[];function cs(l,e){return l[0]==="pt"?0:1}g=cs(m),_=kl[g]=as[g](m),S=new Gl({props:{title:"Mô hình kì vọng một lô các đầu vào",local:"mô-hình-kì-vọng-một-lô-các-đầu-vào",headingTag:"h2"}});const ps=[Xs,Gs],gl=[];function is(l,e){return l[0]==="pt"?0:1}$=is(m),I=gl[$]=ps[$](m);const rs=[Ds,Bs],_l=[];function Ms(l,e){return l[0]==="pt"?0:1}A=Ms(m),C=_l[A]=rs[A](m);const us=[Hs,xs],$l=[];function hs(l,e){return l[0]==="pt"?0:1}Z=hs(m),N=$l[Z]=us[Z](m);const ms=[Ss,Fs],Il=[];function os(l,e){return l[0]==="pt"?0:1}v=os(m),Q=Il[v]=ms[v](m),ll=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUJpZHMlMkMlMjBpZHMlNUQ=",highlighted:'<span class="hljs-attr">batched_ids</span> = [ids, ids]',wrap:!1}}),R=new ks({props:{$$slots:{default:[Ys]},$$scope:{ctx:m}}}),tl=new Gl({props:{title:"Đêm thêm vào đầu vào",local:"đêm-thêm-vào-đầu-vào",headingTag:"h2"}}),al=new T({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}}),pl=new T({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 bs=[Ls,qs],Al=[];function ys(l,e){return l[0]==="pt"?0:1}V=ys(m),W=Al[V]=bs[V](m),ul=new Gl({props:{title:"Attention masks",local:"attention-masks",headingTag:"h2"}});const js=[Ps,Ks],Cl=[];function fs(l,e){return l[0]==="pt"?0:1}return E=fs(m),z=Cl[E]=js[E](m),G=new ks({props:{$$slots:{default:[Os]},$$scope:{ctx:m}}}),yl=new Gl({props:{title:"Những chuỗi dài hơn",local:"những-chuỗi-dài-hơn",headingTag:"h2"}}),Jl=new T({props:{code:"c2VxdWVuY2UlMjAlM0QlMjBzZXF1ZW5jZSU1QiUzQW1heF9zZXF1ZW5jZV9sZW5ndGglNUQ=",highlighted:"sequence = sequence[:max_sequence_length]",wrap:!1}}),Tl=new Vs({props:{source:"https://github.com/huggingface/course/blob/main/chapters/vi/chapter2/5.mdx"}}),{c(){s=d("meta"),a=r(),n=d("p"),i=r(),o(t.$$.fragment),f=r(),o(D.$$.fragment),Xl=r(),k.c(),Zl=r(),_.c(),Nl=r(),x=d("p"),x.textContent=vn,Bl=r(),H=d("ul"),H.innerHTML=Qn,Dl=r(),F=d("p"),F.textContent=Vn,xl=r(),o(S.$$.fragment),Hl=r(),Y=d("p"),Y.textContent=Wn,Fl=r(),I.c(),vl=r(),q=d("p"),q.textContent=En,Sl=r(),L=d("p"),L.innerHTML=zn,Yl=r(),C.c(),Ql=r(),K=d("p"),K.textContent=Rn,ql=r(),N.c(),Vl=r(),P=d("p"),P.textContent=Gn,Ll=r(),Q.c(),Wl=r(),O=d("p"),O.innerHTML=Xn,Kl=r(),o(ll.$$.fragment),Pl=r(),nl=d("p"),nl.textContent=Bn,Ol=r(),o(R.$$.fragment),ln=r(),sl=d("p"),sl.innerHTML=Dn,nn=r(),o(tl.$$.fragment),sn=r(),el=d("p"),el.textContent=xn,tn=r(),o(al.$$.fragment),en=r(),cl=d("p"),cl.innerHTML=Hn,an=r(),o(pl.$$.fragment),cn=r(),il=d("p"),il.innerHTML=Fn,pn=r(),W.c(),El=r(),rl=d("p"),rl.textContent=Sn,rn=r(),Ml=d("p"),Ml.innerHTML=Yn,Mn=r(),o(ul.$$.fragment),un=r(),hl=d("p"),hl.innerHTML=qn,hn=r(),ml=d("p"),ml.textContent=Ln,mn=r(),z.c(),zl=r(),ol=d("p"),ol.textContent=Kn,on=r(),bl=d("p"),bl.textContent=Pn,bn=r(),o(G.$$.fragment),yn=r(),o(yl.$$.fragment),jn=r(),jl=d("p"),jl.textContent=On,fn=r(),fl=d("ul"),fl.innerHTML=ls,dn=r(),dl=d("p"),dl.innerHTML=ns,Un=r(),Ul=d("p"),Ul.innerHTML=ss,Jn=r(),o(Jl.$$.fragment),Tn=r(),o(Tl.$$.fragment),wn=r(),Rl=d("p"),this.h()},l(l){const e=Ns("svelte-u9bgzb",document.head);s=U(e,"META",{name:!0,content:!0}),e.forEach(c),a=M(l),n=U(l,"P",{}),Ts(n).forEach(c),i=M(l),b(t.$$.fragment,l),f=M(l),b(D.$$.fragment,l),Xl=M(l),k.l(l),Zl=M(l),_.l(l),Nl=M(l),x=U(l,"P",{"data-svelte-h":!0}),J(x)!=="svelte-1qijujl"&&(x.textContent=vn),Bl=M(l),H=U(l,"UL",{"data-svelte-h":!0}),J(H)!=="svelte-gapbt"&&(H.innerHTML=Qn),Dl=M(l),F=U(l,"P",{"data-svelte-h":!0}),J(F)!=="svelte-cxeosk"&&(F.textContent=Vn),xl=M(l),b(S.$$.fragment,l),Hl=M(l),Y=U(l,"P",{"data-svelte-h":!0}),J(Y)!=="svelte-9vyp3c"&&(Y.textContent=Wn),Fl=M(l),I.l(l),vl=M(l),q=U(l,"P",{"data-svelte-h":!0}),J(q)!=="svelte-9u0xwe"&&(q.textContent=En),Sl=M(l),L=U(l,"P",{"data-svelte-h":!0}),J(L)!=="svelte-143ft4g"&&(L.innerHTML=zn),Yl=M(l),C.l(l),Ql=M(l),K=U(l,"P",{"data-svelte-h":!0}),J(K)!=="svelte-1vwg57u"&&(K.textContent=Rn),ql=M(l),N.l(l),Vl=M(l),P=U(l,"P",{"data-svelte-h":!0}),J(P)!=="svelte-19la54n"&&(P.textContent=Gn),Ll=M(l),Q.l(l),Wl=M(l),O=U(l,"P",{"data-svelte-h":!0}),J(O)!=="svelte-15zxysl"&&(O.innerHTML=Xn),Kl=M(l),b(ll.$$.fragment,l),Pl=M(l),nl=U(l,"P",{"data-svelte-h":!0}),J(nl)!=="svelte-r0x72t"&&(nl.textContent=Bn),Ol=M(l),b(R.$$.fragment,l),ln=M(l),sl=U(l,"P",{"data-svelte-h":!0}),J(sl)!=="svelte-1ta0p3q"&&(sl.innerHTML=Dn),nn=M(l),b(tl.$$.fragment,l),sn=M(l),el=U(l,"P",{"data-svelte-h":!0}),J(el)!=="svelte-1o810ai"&&(el.textContent=xn),tn=M(l),b(al.$$.fragment,l),en=M(l),cl=U(l,"P",{"data-svelte-h":!0}),J(cl)!=="svelte-kpfw2f"&&(cl.innerHTML=Hn),an=M(l),b(pl.$$.fragment,l),cn=M(l),il=U(l,"P",{"data-svelte-h":!0}),J(il)!=="svelte-1ixr2ng"&&(il.innerHTML=Fn),pn=M(l),W.l(l),El=M(l),rl=U(l,"P",{"data-svelte-h":!0}),J(rl)!=="svelte-6k0wn4"&&(rl.textContent=Sn),rn=M(l),Ml=U(l,"P",{"data-svelte-h":!0}),J(Ml)!=="svelte-ehfc98"&&(Ml.innerHTML=Yn),Mn=M(l),b(ul.$$.fragment,l),un=M(l),hl=U(l,"P",{"data-svelte-h":!0}),J(hl)!=="svelte-1kqig8k"&&(hl.innerHTML=qn),hn=M(l),ml=U(l,"P",{"data-svelte-h":!0}),J(ml)!=="svelte-14bf017"&&(ml.textContent=Ln),mn=M(l),z.l(l),zl=M(l),ol=U(l,"P",{"data-svelte-h":!0}),J(ol)!=="svelte-1pecmff"&&(ol.textContent=Kn),on=M(l),bl=U(l,"P",{"data-svelte-h":!0}),J(bl)!=="svelte-1ktp76e"&&(bl.textContent=Pn),bn=M(l),b(G.$$.fragment,l),yn=M(l),b(yl.$$.fragment,l),jn=M(l),jl=U(l,"P",{"data-svelte-h":!0}),J(jl)!=="svelte-1gcv4h7"&&(jl.textContent=On),fn=M(l),fl=U(l,"UL",{"data-svelte-h":!0}),J(fl)!=="svelte-17n24yj"&&(fl.innerHTML=ls),dn=M(l),dl=U(l,"P",{"data-svelte-h":!0}),J(dl)!=="svelte-xaqayz"&&(dl.innerHTML=ns),Un=M(l),Ul=U(l,"P",{"data-svelte-h":!0}),J(Ul)!=="svelte-17wujgq"&&(Ul.innerHTML=ss),Jn=M(l),b(Jl.$$.fragment,l),Tn=M(l),b(Tl.$$.fragment,l),wn=M(l),Rl=U(l,"P",{}),Ts(Rl).forEach(c),this.h()},h(){ws(s,"name","hf:doc:metadata"),ws(s,"content",nt)},m(l,e){vs(document.head,s),p(l,a,e),p(l,n,e),p(l,i,e),y(t,l,e),p(l,f,e),y(D,l,e),p(l,Xl,e),wl[w].m(l,e),p(l,Zl,e),kl[g].m(l,e),p(l,Nl,e),p(l,x,e),p(l,Bl,e),p(l,H,e),p(l,Dl,e),p(l,F,e),p(l,xl,e),y(S,l,e),p(l,Hl,e),p(l,Y,e),p(l,Fl,e),gl[$].m(l,e),p(l,vl,e),p(l,q,e),p(l,Sl,e),p(l,L,e),p(l,Yl,e),_l[A].m(l,e),p(l,Ql,e),p(l,K,e),p(l,ql,e),$l[Z].m(l,e),p(l,Vl,e),p(l,P,e),p(l,Ll,e),Il[v].m(l,e),p(l,Wl,e),p(l,O,e),p(l,Kl,e),y(ll,l,e),p(l,Pl,e),p(l,nl,e),p(l,Ol,e),y(R,l,e),p(l,ln,e),p(l,sl,e),p(l,nn,e),y(tl,l,e),p(l,sn,e),p(l,el,e),p(l,tn,e),y(al,l,e),p(l,en,e),p(l,cl,e),p(l,an,e),y(pl,l,e),p(l,cn,e),p(l,il,e),p(l,pn,e),Al[V].m(l,e),p(l,El,e),p(l,rl,e),p(l,rn,e),p(l,Ml,e),p(l,Mn,e),y(ul,l,e),p(l,un,e),p(l,hl,e),p(l,hn,e),p(l,ml,e),p(l,mn,e),Cl[E].m(l,e),p(l,zl,e),p(l,ol,e),p(l,on,e),p(l,bl,e),p(l,bn,e),y(G,l,e),p(l,yn,e),y(yl,l,e),p(l,jn,e),p(l,jl,e),p(l,fn,e),p(l,fl,e),p(l,dn,e),p(l,dl,e),p(l,Un,e),p(l,Ul,e),p(l,Jn,e),y(Jl,l,e),p(l,Tn,e),y(Tl,l,e),p(l,wn,e),p(l,Rl,e),kn=!0},p(l,[e]){const ds={};e&1&&(ds.fw=l[0]),t.$set(ds);let gn=w;w=es(l),w!==gn&&(B(),u(wl[gn],1,1,()=>{wl[gn]=null}),X(),k=wl[w],k||(k=wl[w]=ts[w](l),k.c()),h(k,1),k.m(Zl.parentNode,Zl));let _n=g;g=cs(l),g!==_n&&(B(),u(kl[_n],1,1,()=>{kl[_n]=null}),X(),_=kl[g],_||(_=kl[g]=as[g](l),_.c()),h(_,1),_.m(Nl.parentNode,Nl));let $n=$;$=is(l),$!==$n&&(B(),u(gl[$n],1,1,()=>{gl[$n]=null}),X(),I=gl[$],I||(I=gl[$]=ps[$](l),I.c()),h(I,1),I.m(vl.parentNode,vl));let In=A;A=Ms(l),A!==In&&(B(),u(_l[In],1,1,()=>{_l[In]=null}),X(),C=_l[A],C||(C=_l[A]=rs[A](l),C.c()),h(C,1),C.m(Ql.parentNode,Ql));let An=Z;Z=hs(l),Z!==An&&(B(),u($l[An],1,1,()=>{$l[An]=null}),X(),N=$l[Z],N||(N=$l[Z]=us[Z](l),N.c()),h(N,1),N.m(Vl.parentNode,Vl));let Cn=v;v=os(l),v!==Cn&&(B(),u(Il[Cn],1,1,()=>{Il[Cn]=null}),X(),Q=Il[v],Q||(Q=Il[v]=ms[v](l),Q.c()),h(Q,1),Q.m(Wl.parentNode,Wl));const Us={};e&2&&(Us.$$scope={dirty:e,ctx:l}),R.$set(Us);let Zn=V;V=ys(l),V!==Zn&&(B(),u(Al[Zn],1,1,()=>{Al[Zn]=null}),X(),W=Al[V],W||(W=Al[V]=bs[V](l),W.c()),h(W,1),W.m(El.parentNode,El));let Nn=E;E=fs(l),E!==Nn&&(B(),u(Cl[Nn],1,1,()=>{Cl[Nn]=null}),X(),z=Cl[E],z||(z=Cl[E]=js[E](l),z.c()),h(z,1),z.m(zl.parentNode,zl));const Js={};e&2&&(Js.$$scope={dirty:e,ctx:l}),G.$set(Js)},i(l){kn||(h(t.$$.fragment,l),h(D.$$.fragment,l),h(k),h(_),h(S.$$.fragment,l),h(I),h(C),h(N),h(Q),h(ll.$$.fragment,l),h(R.$$.fragment,l),h(tl.$$.fragment,l),h(al.$$.fragment,l),h(pl.$$.fragment,l),h(W),h(ul.$$.fragment,l),h(z),h(G.$$.fragment,l),h(yl.$$.fragment,l),h(Jl.$$.fragment,l),h(Tl.$$.fragment,l),kn=!0)},o(l){u(t.$$.fragment,l),u(D.$$.fragment,l),u(k),u(_),u(S.$$.fragment,l),u(I),u(C),u(N),u(Q),u(ll.$$.fragment,l),u(R.$$.fragment,l),u(tl.$$.fragment,l),u(al.$$.fragment,l),u(pl.$$.fragment,l),u(W),u(ul.$$.fragment,l),u(z),u(G.$$.fragment,l),u(yl.$$.fragment,l),u(Jl.$$.fragment,l),u(Tl.$$.fragment,l),kn=!1},d(l){l&&(c(a),c(n),c(i),c(f),c(Xl),c(Zl),c(Nl),c(x),c(Bl),c(H),c(Dl),c(F),c(xl),c(Hl),c(Y),c(Fl),c(vl),c(q),c(Sl),c(L),c(Yl),c(Ql),c(K),c(ql),c(Vl),c(P),c(Ll),c(Wl),c(O),c(Kl),c(Pl),c(nl),c(Ol),c(ln),c(sl),c(nn),c(sn),c(el),c(tn),c(en),c(cl),c(an),c(cn),c(il),c(pn),c(El),c(rl),c(rn),c(Ml),c(Mn),c(un),c(hl),c(hn),c(ml),c(mn),c(zl),c(ol),c(on),c(bl),c(bn),c(yn),c(jn),c(jl),c(fn),c(fl),c(dn),c(dl),c(Un),c(Ul),c(Jn),c(Tn),c(wn),c(Rl)),c(s),j(t,l),j(D,l),wl[w].d(l),kl[g].d(l),j(S,l),gl[$].d(l),_l[A].d(l),$l[Z].d(l),Il[v].d(l),j(ll,l),j(R,l),j(tl,l),j(al,l),j(pl,l),Al[V].d(l),j(ul,l),Cl[E].d(l),j(G,l),j(yl,l),j(Jl,l),j(Tl,l)}}}const nt='{"title":"Xử lý đa chuỗi","local":"xử-lý-đa-chuỗi","sections":[{"title":"Mô hình kì vọng một lô các đầu vào","local":"mô-hình-kì-vọng-một-lô-các-đầu-vào","sections":[],"depth":2},{"title":"Đêm thêm vào đầu vào","local":"đêm-thêm-vào-đầu-vào","sections":[],"depth":2},{"title":"Attention masks","local":"attention-masks","sections":[],"depth":2},{"title":"Những chuỗi dài hơn","local":"những-chuỗi-dài-hơn","sections":[],"depth":2}],"depth":1}';function st(m,s,a){let n="pt";return As(()=>{const i=new URLSearchParams(window.location.search);a(0,n=i.get("fw")||"pt")}),[n]}class ut extends Cs{constructor(s){super(),Zs(this,s,st,lt,Is,{})}}export{ut as component};
