import{s as Cs,o as gs,n as $s}from"../chunks/scheduler.cc52f4b9.js";import{S as Zs,i as Qs,e as U,s as i,c as b,h as Ns,a as J,d as p,b as u,f as Ts,g as j,j as h,k as ks,l as Vs,m as M,n as f,o as c,u as v,t as o,p as y,v as B}from"../chunks/index.85964560.js";import{T as _s}from"../chunks/Tip.72f3abad.js";import{C as Ws,H as vl,E as Es}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.4cab8d21.js";import{Y as Is}from"../chunks/Youtube.2feacd03.js";import{C as w}from"../chunks/CodeBlock.b43b1e5c.js";import{C as As}from"../chunks/CourseFloatingBanner.d24cbe55.js";import{F as zs}from"../chunks/FrameworkSwitchCourse.17523e75.js";function Rs(m){let s,a;return s=new As({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/th/chapter2/section5_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter2/section5_tf.ipynb"}]}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function Gs(m){let s,a;return s=new As({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/th/chapter2/section5_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter2/section5_pt.ipynb"}]}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function Xs(m){let s,a;return s=new Is({props:{id:"ROxrFOEbsQE"}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function vs(m){let s,a;return s=new Is({props:{id:"M6adb1j2jPI"}}),{c(){b(s.$$.fragment)},l(e){j(s.$$.fragment,e)},m(e,r){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function Bs(m){let s,a,e,r;return s=new w({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}}),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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function Ds(m){let s,a,e,r;return s=new w({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}}),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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function Fs(m){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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function xs(m){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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function Hs(m){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){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function Ss(m){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){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function Ys(m){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){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function qs(m){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){f(s,e,r),a=!0},i(e){a||(o(s.$$.fragment,e),a=!0)},o(e){c(s.$$.fragment,e),a=!1},d(e){y(s,e)}}}function Ls(m){let s,a="✏️ <strong>Try it out!</strong> แปลงลิสท์ของ <code>batched_ids</code> นี้ไปเป็น tensor และใส่เข้าไปในโมเดลของคุณ แล้วลองตรวจสอบดูว่าคุณได้ logits เหมือนกับที่ได้ก่อนหน้านี้ไหม(แต่ได้สองค่า)!";return{c(){s=U("p"),s.innerHTML=a},l(e){s=J(e,"P",{"data-svelte-h":!0}),h(s)!=="svelte-1sfv6ui"&&(s.innerHTML=a)},m(e,r){M(e,s,r)},p:$s,d(e){e&&p(s)}}}function Ks(m){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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function Ps(m){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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function Os(m){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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function lt(m){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(t){j(s.$$.fragment,t),a=u(t),j(e.$$.fragment,t)},m(t,d){f(s,t,d),M(t,a,d),f(e,t,d),r=!0},i(t){r||(o(s.$$.fragment,t),o(e.$$.fragment,t),r=!0)},o(t){c(s.$$.fragment,t),c(e.$$.fragment,t),r=!1},d(t){t&&p(a),y(s,t),y(e,t)}}}function et(m){let s,a="✏️ <strong>ลองเลย!</strong> ทำ tokenization กับสองประโยคใน section 2 (“I’ve been waiting for a HuggingFace course my whole life.” และ “I hate this so much!“) แล้วใส่เข้าไปในโมเดลและตรวจสอบดูว่าคุณได้ logits เหมือนกับใน section 2 หรือไม่ หลังจากนั้นให้จับประโยครวมกันเป็นชุด(batch) โดยใช้ padding token แล้วสร้าง attention mask ที่ถูกต้อง และตรวจสอบดูว่าคุณได้ผลลัพท์เหมือนกันหรือไม่หลังจากใส่เข้าไปในโมเดลแล้ว!";return{c(){s=U("p"),s.innerHTML=a},l(e){s=J(e,"P",{"data-svelte-h":!0}),h(s)!=="svelte-12ro2fh"&&(s.innerHTML=a)},m(e,r){M(e,s,r)},p:$s,d(e){e&&p(s)}}}function st(m){let s,a,e,r,t,d,D,Bl,F,Dl,T,k,Ql,_,$,Nl,x,Ve="ใน section ที่แล้ว เราได้ลองทำตัวอย่างการใช้งานที่ง่ายที่สุด: คือการอนุมาน(inference)โดยใช้ประโยคสั้นๆ เพียงประโยคเดียว อย่างไรก็ตาม ก็มีบางคำถามเกิดขึ้นมา:",Fl,H,We="<li>เราจะจัดการกับประโยคหลายๆประโยคอย่างไร?</li> <li>เราจะจัดการกับประโยคหลายๆประโยคที่มี <em>ความยาวต่างกัน</em> อย่างไร?</li> <li>ดัชนีคำศัพท์(vocabulary indices) เป็นเพียงข้อมูลประเภทเดียวที่ทำให้โมเดลทำงานได้ดีหรือไม่?</li> <li>มีประโยคที่เป็นประโยคที่ยาวเกินไปหรือไม่?</li>",xl,S,Ee="มาดูกันว่าปัญหาประเภทใดบ้างที่เกิดขึ้นจากคำถามเหล่านี้ และเราจะแก้ไขมันโดยใช้ 🤗 Transformers API ได้อย่างไร",Hl,Y,Sl,q,ze="ในแบบฝึกหัดที่ผ่านมาคุณได้เห็นแล้วว่าประโยคถูกแปลงไปเป็นลิสท์ของตัวเลขอย่างไร ทีนี้เรามาลองแปลงลิสท์ของตัวเลขนี้ไปเป็น tensor และใส่มันเข้าไปในโมเดล:",Yl,I,A,Vl,L,Re="โอ้วไม่นะ! ทำไมมันมีข้อผิดพลาดละ? ในเมื่อเราก็ทำตามขั้นตอนต่างๆ จาก pipeline ใน section 2",ql,K,Ge="ปัญหาก็คือเราใส่ประโยคเพียงประโยคเดียวเข้าไปในโมเดล แต่ในขณะที่โมเดล 🤗 Transformers นั้นต้องการประโยคหลายๆประโยค ในที่นี้เราได้ลองทำทุกอย่างที่ tokenizer ทำอยู่เบื้องหลังเมื่อเราใช้มันกับ <code>ประโยค(sequence)</code> แต่ถ้าคุณลองสังเกตุดีๆ คุณจะเห็นว่ามันไม่ได้เพียงแค่แปลง input IDs ไปเป็น tensor เท่านั้น แต่มันยังเพิ่มมิติ(dimension) ของ tensor อีกด้วย:",Ll,C,g,Wl,P,Xe="ลองอีกครั้งและเพิ่มมิติ(dimension)ใหม่ด้วย:",Kl,Z,Q,El,O,ve="เราแสดง input IDs พร้อมทั้งผล logits และนี่คือผลลัพธ์:",Pl,N,V,zl,ll,Be="<em>Batching</em> คือ การส่งประโยคหลายๆประโยคเข้าไปยังโมเดลพร้อมๆกันทีเดียว ถ้าคุณมีแค่หนึ่งประโยค คุณก็สามารถสร้างชุด(batch)ของประโยค ที่มีเพียงแค่หนึ่งประโยคได้:",Ol,el,le,sl,De="นี่คือชุด(batch)ของข้อมูลที่ประด้วยสองประโยคที่เหมือนกัน!",ee,G,se,tl,Fe="ฺBatching นั้นทำให้โมเดลสามารถทำงานได้เมื่อคุณใส่ประโยคหลายๆประโยคเข้าไป การใช้ประโยคหลายๆประโยคนั้นก็สามารถทำได้ง่ายเหมือนกับที่ทำกับประโยคเดียว แต่ก็ยังมีปัญหาที่สอง เมื่อคุณพยายามรวมประโยคตั้งแต่สองประโยคขึ้นไปเป็นชุดข้อมูลเดียวกัน แต่ประโยคเหล่านั้นอาจจะมีความยาวที่แตกต่างกัน ถ้าคุณเคยทำ tensors มาก่อนหน้านี้ คุณจะรู้ว่ามันจำเป็นต้องมีขนาดจตุรัส(rectangular) ดังนั้นคุณจะไม่สามารถแปลงลิสท์ของ input IDs ไปเป็น tensor ได้โดยตรง เราสามารถแก้ปัญหานี้ได้ด้วยการ <em>pad</em> อินพุต",te,nl,ne,al,xe="ลิสท์ของลิสท์ต่อไปนี้ไม่สามารถถูกแปลงไปเป็น tensor ได้:",ae,pl,pe,Ml,He="ในการแก้ปัญหานี้ เราจะใช้ <em>padding</em> เพื่อทำให้ tensor ของเรามีขนาดเป็นจตุรัส Padding จะทำให้ทุกประโยคของเรามีความยาวเท่ากันโดยการเพิ่มคำพิเศษ ที่เรียกว่า <em>padding token</em> ไปในประโยค ยกตัวอย่างเช่น ถ้าคุณมี 10 ประโยคที่แต่ละประโยคมี 10 คำ และมี 1 ประโยคที่มี 20 คำ padding ทำให้ทุกประโยคนั้นมี 20 คำเหมือนกัน ในตัวอย่างของเรา tensor ที่เป็นผลลัพท์ของเราเป็นแบบนี้:",Me,rl,re,il,Se="padding token ID สามารถหาได้ใน <code>tokenizer.pad_token_id</code> เรามาลองใช้มันดูและใส่ประโยคสองประโยคของเราเข้าไปในโมเดลทีละอันและใส่แบบเป็นชุด(batch)ด้วย:",ie,W,E,Rl,ul,Ye="มีอะไรบางอย่างผิดปกติเกิดขึ้นกับ logits ในการทำนายแบบเป็นชุด(batch) ของเรา: แถวที่สองควรจะได้ logits เหมือนกันกับประโยคที่สอง แต่เราได้ที่ต่างกันโดยสิ้นเชิง!",ue,cl,qe="นี่เป็นเพราะว่าคุณลักษณะสำคัญของโมเดล Transformer คือ attention layers ที่พิจารณาบริบทของแต่ละ token โดยจะมีการพิจารณา padding token ด้วย เนื่องจาก attention layers พิจารณาทุก tokens ของประโยค เพื่อให้ได้ผลลัพท์เดียวกันไม่ว่าจะใส่ประโยคที่ความยาวต่างกันเข้าไปทีละประโยคหรือใส่ประโยคเดียวกันนี้ที่มีการ padding ไปพร้อมกันทีละหลายๆประโยค(batch) เราจำเป็นที่จะต้องบอก attention layers เหล่านั้นให้ไม่ต้องพิจารณา padding tokens โดยสามารถทำได้ด้วยการใช้ attention mask",ce,ol,oe,ml,Le="<em>Attention masks</em> คือ tensors ที่มีขนาดเท่ากับ tensor ของ input IDs และประกอบด้วย 0 และ 1: 1 บ่งบอกว่า tokens ในตำแหน่งนั้นๆ จำเป็นต้องพิจารณา, และ 0 บ่งบอกว่า tokens ในตำแหน่งนั้นๆ ไม่ต้องพิจารณา(กล่าวคือ มันควรจะถูกละเลยโดย attention layers ของโมเดล)",me,bl,Ke="มาทำตัวอย่างที่แล้วโดยใช้ attention mask กัน:",be,z,R,Gl,jl,Pe="ตอนนี้เราได้ logits เดียวกันสำหรับประโยคที่สองในชุด(batch) ของข้อมูล",je,fl,Oe="สังเกตุว่าค่าสุดท้ายของประโยคที่สองนั้นเป็นอย่างไรใน padding ID ซึ่งก็คือค่า 0 ใน attention mask",fe,X,ye,yl,de,dl,ls="การใช้โมเดล Transformer นั้นมีข้อจำกัดเรื่องความยาวของประโยคที่เราสามารถใส่เข้าไปได้ โมเดลส่วนใหญ่จะสามารถรองรับประโยคได้อย่างมาก 512 หรือ 1024 tokens และก็จะทำงานไม่ได้ถ้าให้มันประมวลผลประโยคที่ยาวขึ้น มีวีธีแก้ปัญหานี้อยู่ 2 วิธี:",Ue,Ul,es="<li>ใช้โมเดลที่รองรับประโยคที่ยาวขึ้น</li> <li>ตัดประโยคของคุณให้สั้นลง</li>",Je,Jl,ss='โมเดลต่างๆ รองรับความยาวของประโยคที่แตกต่างกัน และบางโมเดลนั้นเชี่ยวชาญในการจัดการกับประโยคที่ยาวๆ <a href="https://huggingface.co/transformers/model_doc/longformer.html" rel="nofollow">Longformer</a> เป็นหนึ่งตัวอย่าง และอีกตัวอย่างก็คือ <a href="https://huggingface.co/transformers/model_doc/led.html" rel="nofollow">LED</a> ถ้าคุณกำลังทำงานที่ต้องการประโยคที่ยาวมากๆ เราแนะนำให้คุณลองดูโมเดลเหล่านั้น',he,hl,ts="หรือในทางตรงกันข้าม เราแนะนำให้คุณตัดประโยคของคุณให้สั้นลงโดยการระบุตัวแปร `max_sequence_length:",we,wl,Te,Tl,ke,Xl,_e;t=new zs({props:{fw:m[0]}}),D=new Ws({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),F=new vl({props:{title:"การจัดการกับหลายๆประโยค(multiple sequences)",local:"การจดการกบหลายๆประโยคmultiple-sequences",headingTag:"h1"}});const ns=[Gs,Rs],kl=[];function as(l,n){return l[0]==="pt"?0:1}T=as(m),k=kl[T]=ns[T](m);const ps=[vs,Xs],_l=[];function Ms(l,n){return l[0]==="pt"?0:1}_=Ms(m),$=_l[_]=ps[_](m),Y=new vl({props:{title:"โมเดลคาดหวังที่จะได้ชุด(batch)ของข้อมูลเป็นอินพุต",local:"โมเดลคาดหวงทจะไดชดbatchของขอมลเปนอนพต",headingTag:"h2"}});const rs=[Ds,Bs],$l=[];function is(l,n){return l[0]==="pt"?0:1}I=is(m),A=$l[I]=rs[I](m);const us=[xs,Fs],Il=[];function cs(l,n){return l[0]==="pt"?0:1}C=cs(m),g=Il[C]=us[C](m);const os=[Ss,Hs],Al=[];function ms(l,n){return l[0]==="pt"?0:1}Z=ms(m),Q=Al[Z]=os[Z](m);const bs=[qs,Ys],Cl=[];function js(l,n){return l[0]==="pt"?0:1}N=js(m),V=Cl[N]=bs[N](m),el=new w({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUJpZHMlMkMlMjBpZHMlNUQ=",highlighted:'<span class="hljs-attr">batched_ids</span> = [ids, ids]',wrap:!1}}),G=new _s({props:{$$slots:{default:[Ls]},$$scope:{ctx:m}}}),nl=new vl({props:{title:"การเติม(Padding) อินพุต",local:"การเตมpadding-อนพต",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 fs=[Ps,Ks],gl=[];function ys(l,n){return l[0]==="pt"?0:1}W=ys(m),E=gl[W]=fs[W](m),ol=new vl({props:{title:"Attention masks",local:"attention-masks",headingTag:"h2"}});const ds=[lt,Os],Zl=[];function Us(l,n){return l[0]==="pt"?0:1}return z=Us(m),R=Zl[z]=ds[z](m),X=new _s({props:{$$slots:{default:[et]},$$scope:{ctx:m}}}),yl=new vl({props:{title:"ประโยคที่ยาวขึ้น",local:"ประโยคทยาวขน",headingTag:"h2"}}),wl=new w({props:{code:"c2VxdWVuY2UlMjAlM0QlMjBzZXF1ZW5jZSU1QiUzQW1heF9zZXF1ZW5jZV9sZW5ndGglNUQ=",highlighted:"sequence = sequence[:max_sequence_length]",wrap:!1}}),Tl=new Es({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter2/5.mdx"}}),{c(){s=U("meta"),a=i(),e=U("p"),r=i(),b(t.$$.fragment),d=i(),b(D.$$.fragment),Bl=i(),b(F.$$.fragment),Dl=i(),k.c(),Ql=i(),$.c(),Nl=i(),x=U("p"),x.textContent=Ve,Fl=i(),H=U("ul"),H.innerHTML=We,xl=i(),S=U("p"),S.textContent=Ee,Hl=i(),b(Y.$$.fragment),Sl=i(),q=U("p"),q.textContent=ze,Yl=i(),A.c(),Vl=i(),L=U("p"),L.textContent=Re,ql=i(),K=U("p"),K.innerHTML=Ge,Ll=i(),g.c(),Wl=i(),P=U("p"),P.textContent=Xe,Kl=i(),Q.c(),El=i(),O=U("p"),O.textContent=ve,Pl=i(),V.c(),zl=i(),ll=U("p"),ll.innerHTML=Be,Ol=i(),b(el.$$.fragment),le=i(),sl=U("p"),sl.textContent=De,ee=i(),b(G.$$.fragment),se=i(),tl=U("p"),tl.innerHTML=Fe,te=i(),b(nl.$$.fragment),ne=i(),al=U("p"),al.textContent=xe,ae=i(),b(pl.$$.fragment),pe=i(),Ml=U("p"),Ml.innerHTML=He,Me=i(),b(rl.$$.fragment),re=i(),il=U("p"),il.innerHTML=Se,ie=i(),E.c(),Rl=i(),ul=U("p"),ul.textContent=Ye,ue=i(),cl=U("p"),cl.textContent=qe,ce=i(),b(ol.$$.fragment),oe=i(),ml=U("p"),ml.innerHTML=Le,me=i(),bl=U("p"),bl.textContent=Ke,be=i(),R.c(),Gl=i(),jl=U("p"),jl.textContent=Pe,je=i(),fl=U("p"),fl.textContent=Oe,fe=i(),b(X.$$.fragment),ye=i(),b(yl.$$.fragment),de=i(),dl=U("p"),dl.textContent=ls,Ue=i(),Ul=U("ul"),Ul.innerHTML=es,Je=i(),Jl=U("p"),Jl.innerHTML=ss,he=i(),hl=U("p"),hl.textContent=ts,we=i(),b(wl.$$.fragment),Te=i(),b(Tl.$$.fragment),ke=i(),Xl=U("p"),this.h()},l(l){const n=Ns("svelte-u9bgzb",document.head);s=J(n,"META",{name:!0,content:!0}),n.forEach(p),a=u(l),e=J(l,"P",{}),Ts(e).forEach(p),r=u(l),j(t.$$.fragment,l),d=u(l),j(D.$$.fragment,l),Bl=u(l),j(F.$$.fragment,l),Dl=u(l),k.l(l),Ql=u(l),$.l(l),Nl=u(l),x=J(l,"P",{"data-svelte-h":!0}),h(x)!=="svelte-1nayy55"&&(x.textContent=Ve),Fl=u(l),H=J(l,"UL",{"data-svelte-h":!0}),h(H)!=="svelte-19jbi5e"&&(H.innerHTML=We),xl=u(l),S=J(l,"P",{"data-svelte-h":!0}),h(S)!=="svelte-vu1ugr"&&(S.textContent=Ee),Hl=u(l),j(Y.$$.fragment,l),Sl=u(l),q=J(l,"P",{"data-svelte-h":!0}),h(q)!=="svelte-hqoa5u"&&(q.textContent=ze),Yl=u(l),A.l(l),Vl=u(l),L=J(l,"P",{"data-svelte-h":!0}),h(L)!=="svelte-1j51opz"&&(L.textContent=Re),ql=u(l),K=J(l,"P",{"data-svelte-h":!0}),h(K)!=="svelte-1gox6q1"&&(K.innerHTML=Ge),Ll=u(l),g.l(l),Wl=u(l),P=J(l,"P",{"data-svelte-h":!0}),h(P)!=="svelte-kxmeqz"&&(P.textContent=Xe),Kl=u(l),Q.l(l),El=u(l),O=J(l,"P",{"data-svelte-h":!0}),h(O)!=="svelte-av2t0x"&&(O.textContent=ve),Pl=u(l),V.l(l),zl=u(l),ll=J(l,"P",{"data-svelte-h":!0}),h(ll)!=="svelte-1vsfiid"&&(ll.innerHTML=Be),Ol=u(l),j(el.$$.fragment,l),le=u(l),sl=J(l,"P",{"data-svelte-h":!0}),h(sl)!=="svelte-10xevyd"&&(sl.textContent=De),ee=u(l),j(G.$$.fragment,l),se=u(l),tl=J(l,"P",{"data-svelte-h":!0}),h(tl)!=="svelte-8lr0fp"&&(tl.innerHTML=Fe),te=u(l),j(nl.$$.fragment,l),ne=u(l),al=J(l,"P",{"data-svelte-h":!0}),h(al)!=="svelte-1ck280d"&&(al.textContent=xe),ae=u(l),j(pl.$$.fragment,l),pe=u(l),Ml=J(l,"P",{"data-svelte-h":!0}),h(Ml)!=="svelte-624wgs"&&(Ml.innerHTML=He),Me=u(l),j(rl.$$.fragment,l),re=u(l),il=J(l,"P",{"data-svelte-h":!0}),h(il)!=="svelte-10stmc1"&&(il.innerHTML=Se),ie=u(l),E.l(l),Rl=u(l),ul=J(l,"P",{"data-svelte-h":!0}),h(ul)!=="svelte-1s9kjzm"&&(ul.textContent=Ye),ue=u(l),cl=J(l,"P",{"data-svelte-h":!0}),h(cl)!=="svelte-oertkq"&&(cl.textContent=qe),ce=u(l),j(ol.$$.fragment,l),oe=u(l),ml=J(l,"P",{"data-svelte-h":!0}),h(ml)!=="svelte-1h6wd95"&&(ml.innerHTML=Le),me=u(l),bl=J(l,"P",{"data-svelte-h":!0}),h(bl)!=="svelte-17lshpb"&&(bl.textContent=Ke),be=u(l),R.l(l),Gl=u(l),jl=J(l,"P",{"data-svelte-h":!0}),h(jl)!=="svelte-d1gdbd"&&(jl.textContent=Pe),je=u(l),fl=J(l,"P",{"data-svelte-h":!0}),h(fl)!=="svelte-6fh5u5"&&(fl.textContent=Oe),fe=u(l),j(X.$$.fragment,l),ye=u(l),j(yl.$$.fragment,l),de=u(l),dl=J(l,"P",{"data-svelte-h":!0}),h(dl)!=="svelte-i30j5z"&&(dl.textContent=ls),Ue=u(l),Ul=J(l,"UL",{"data-svelte-h":!0}),h(Ul)!=="svelte-1v9sdv"&&(Ul.innerHTML=es),Je=u(l),Jl=J(l,"P",{"data-svelte-h":!0}),h(Jl)!=="svelte-1gococu"&&(Jl.innerHTML=ss),he=u(l),hl=J(l,"P",{"data-svelte-h":!0}),h(hl)!=="svelte-k8idjk"&&(hl.textContent=ts),we=u(l),j(wl.$$.fragment,l),Te=u(l),j(Tl.$$.fragment,l),ke=u(l),Xl=J(l,"P",{}),Ts(Xl).forEach(p),this.h()},h(){ks(s,"name","hf:doc:metadata"),ks(s,"content",tt)},m(l,n){Vs(document.head,s),M(l,a,n),M(l,e,n),M(l,r,n),f(t,l,n),M(l,d,n),f(D,l,n),M(l,Bl,n),f(F,l,n),M(l,Dl,n),kl[T].m(l,n),M(l,Ql,n),_l[_].m(l,n),M(l,Nl,n),M(l,x,n),M(l,Fl,n),M(l,H,n),M(l,xl,n),M(l,S,n),M(l,Hl,n),f(Y,l,n),M(l,Sl,n),M(l,q,n),M(l,Yl,n),$l[I].m(l,n),M(l,Vl,n),M(l,L,n),M(l,ql,n),M(l,K,n),M(l,Ll,n),Il[C].m(l,n),M(l,Wl,n),M(l,P,n),M(l,Kl,n),Al[Z].m(l,n),M(l,El,n),M(l,O,n),M(l,Pl,n),Cl[N].m(l,n),M(l,zl,n),M(l,ll,n),M(l,Ol,n),f(el,l,n),M(l,le,n),M(l,sl,n),M(l,ee,n),f(G,l,n),M(l,se,n),M(l,tl,n),M(l,te,n),f(nl,l,n),M(l,ne,n),M(l,al,n),M(l,ae,n),f(pl,l,n),M(l,pe,n),M(l,Ml,n),M(l,Me,n),f(rl,l,n),M(l,re,n),M(l,il,n),M(l,ie,n),gl[W].m(l,n),M(l,Rl,n),M(l,ul,n),M(l,ue,n),M(l,cl,n),M(l,ce,n),f(ol,l,n),M(l,oe,n),M(l,ml,n),M(l,me,n),M(l,bl,n),M(l,be,n),Zl[z].m(l,n),M(l,Gl,n),M(l,jl,n),M(l,je,n),M(l,fl,n),M(l,fe,n),f(X,l,n),M(l,ye,n),f(yl,l,n),M(l,de,n),M(l,dl,n),M(l,Ue,n),M(l,Ul,n),M(l,Je,n),M(l,Jl,n),M(l,he,n),M(l,hl,n),M(l,we,n),f(wl,l,n),M(l,Te,n),f(Tl,l,n),M(l,ke,n),M(l,Xl,n),_e=!0},p(l,[n]){const Js={};n&1&&(Js.fw=l[0]),t.$set(Js);let $e=T;T=as(l),T!==$e&&(B(),c(kl[$e],1,1,()=>{kl[$e]=null}),v(),k=kl[T],k||(k=kl[T]=ns[T](l),k.c()),o(k,1),k.m(Ql.parentNode,Ql));let Ie=_;_=Ms(l),_!==Ie&&(B(),c(_l[Ie],1,1,()=>{_l[Ie]=null}),v(),$=_l[_],$||($=_l[_]=ps[_](l),$.c()),o($,1),$.m(Nl.parentNode,Nl));let Ae=I;I=is(l),I!==Ae&&(B(),c($l[Ae],1,1,()=>{$l[Ae]=null}),v(),A=$l[I],A||(A=$l[I]=rs[I](l),A.c()),o(A,1),A.m(Vl.parentNode,Vl));let Ce=C;C=cs(l),C!==Ce&&(B(),c(Il[Ce],1,1,()=>{Il[Ce]=null}),v(),g=Il[C],g||(g=Il[C]=us[C](l),g.c()),o(g,1),g.m(Wl.parentNode,Wl));let ge=Z;Z=ms(l),Z!==ge&&(B(),c(Al[ge],1,1,()=>{Al[ge]=null}),v(),Q=Al[Z],Q||(Q=Al[Z]=os[Z](l),Q.c()),o(Q,1),Q.m(El.parentNode,El));let Ze=N;N=js(l),N!==Ze&&(B(),c(Cl[Ze],1,1,()=>{Cl[Ze]=null}),v(),V=Cl[N],V||(V=Cl[N]=bs[N](l),V.c()),o(V,1),V.m(zl.parentNode,zl));const hs={};n&2&&(hs.$$scope={dirty:n,ctx:l}),G.$set(hs);let Qe=W;W=ys(l),W!==Qe&&(B(),c(gl[Qe],1,1,()=>{gl[Qe]=null}),v(),E=gl[W],E||(E=gl[W]=fs[W](l),E.c()),o(E,1),E.m(Rl.parentNode,Rl));let Ne=z;z=Us(l),z!==Ne&&(B(),c(Zl[Ne],1,1,()=>{Zl[Ne]=null}),v(),R=Zl[z],R||(R=Zl[z]=ds[z](l),R.c()),o(R,1),R.m(Gl.parentNode,Gl));const ws={};n&2&&(ws.$$scope={dirty:n,ctx:l}),X.$set(ws)},i(l){_e||(o(t.$$.fragment,l),o(D.$$.fragment,l),o(F.$$.fragment,l),o(k),o($),o(Y.$$.fragment,l),o(A),o(g),o(Q),o(V),o(el.$$.fragment,l),o(G.$$.fragment,l),o(nl.$$.fragment,l),o(pl.$$.fragment,l),o(rl.$$.fragment,l),o(E),o(ol.$$.fragment,l),o(R),o(X.$$.fragment,l),o(yl.$$.fragment,l),o(wl.$$.fragment,l),o(Tl.$$.fragment,l),_e=!0)},o(l){c(t.$$.fragment,l),c(D.$$.fragment,l),c(F.$$.fragment,l),c(k),c($),c(Y.$$.fragment,l),c(A),c(g),c(Q),c(V),c(el.$$.fragment,l),c(G.$$.fragment,l),c(nl.$$.fragment,l),c(pl.$$.fragment,l),c(rl.$$.fragment,l),c(E),c(ol.$$.fragment,l),c(R),c(X.$$.fragment,l),c(yl.$$.fragment,l),c(wl.$$.fragment,l),c(Tl.$$.fragment,l),_e=!1},d(l){l&&(p(a),p(e),p(r),p(d),p(Bl),p(Dl),p(Ql),p(Nl),p(x),p(Fl),p(H),p(xl),p(S),p(Hl),p(Sl),p(q),p(Yl),p(Vl),p(L),p(ql),p(K),p(Ll),p(Wl),p(P),p(Kl),p(El),p(O),p(Pl),p(zl),p(ll),p(Ol),p(le),p(sl),p(ee),p(se),p(tl),p(te),p(ne),p(al),p(ae),p(pe),p(Ml),p(Me),p(re),p(il),p(ie),p(Rl),p(ul),p(ue),p(cl),p(ce),p(oe),p(ml),p(me),p(bl),p(be),p(Gl),p(jl),p(je),p(fl),p(fe),p(ye),p(de),p(dl),p(Ue),p(Ul),p(Je),p(Jl),p(he),p(hl),p(we),p(Te),p(ke),p(Xl)),p(s),y(t,l),y(D,l),y(F,l),kl[T].d(l),_l[_].d(l),y(Y,l),$l[I].d(l),Il[C].d(l),Al[Z].d(l),Cl[N].d(l),y(el,l),y(G,l),y(nl,l),y(pl,l),y(rl,l),gl[W].d(l),y(ol,l),Zl[z].d(l),y(X,l),y(yl,l),y(wl,l),y(Tl,l)}}}const tt='{"title":"การจัดการกับหลายๆประโยค(multiple sequences)","local":"การจดการกบหลายๆประโยคmultiple-sequences","sections":[{"title":"โมเดลคาดหวังที่จะได้ชุด(batch)ของข้อมูลเป็นอินพุต","local":"โมเดลคาดหวงทจะไดชดbatchของขอมลเปนอนพต","sections":[],"depth":2},{"title":"การเติม(Padding) อินพุต","local":"การเตมpadding-อนพต","sections":[],"depth":2},{"title":"Attention masks","local":"attention-masks","sections":[],"depth":2},{"title":"ประโยคที่ยาวขึ้น","local":"ประโยคทยาวขน","sections":[],"depth":2}],"depth":1}';function nt(m,s,a){let e="pt";return gs(()=>{const r=new URLSearchParams(window.location.search);a(0,e=r.get("fw")||"pt")}),[e]}class mt extends Zs{constructor(s){super(),Qs(this,s,nt,st,Cs,{})}}export{mt as component};
