import{s as kl,o as _l,n as hl}from"../chunks/scheduler.37c15a92.js";import{S as $l,i as Il,g as U,s as i,r as d,A as gl,h as J,f as r,c,j as fl,u as b,x as h,k as Ul,y as Al,a as p,v as j,t as u,b as B,d as M,w as y,p as X}from"../chunks/index.2bf4358c.js";import{T as Jl}from"../chunks/Tip.363c041f.js";import{Y as Tl}from"../chunks/Youtube.1e50a667.js";import{C as T}from"../chunks/CodeBlock.4e987730.js";import{C as wl}from"../chunks/CourseFloatingBanner.6add7356.js";import{F as Zl}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Ge}from"../chunks/Heading.8ada512a.js";import{E as Cl}from"../chunks/getInferenceSnippets.b7c709f6.js";function Nl(m){let l,t;return l=new wl({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/es/chapter2/section5_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/es/chapter2/section5_tf.ipynb"}]}}),{c(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function Ql(m){let l,t;return l=new wl({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/es/chapter2/section5_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/es/chapter2/section5_pt.ipynb"}]}}),{c(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function El(m){let l,t;return l=new Tl({props:{id:"ROxrFOEbsQE"}}),{c(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function Vl(m){let l,t;return l=new Tl({props:{id:"M6adb1j2jPI"}}),{c(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function vl(m){let l,t,s,o;return l=new T({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBc2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIudG9rZW5pemUoc2VxdWVuY2UpJTBBaWRzJTIwJTNEJTIwdG9rZW5pemVyLmNvbnZlcnRfdG9rZW5zX3RvX2lkcyh0b2tlbnMpJTBBaW5wdXRfaWRzJTIwJTNEJTIwdGYuY29uc3RhbnQoaWRzKSUwQSUyMyUyMEVzdGElMjBsJUMzJUFEbmVhJTIwdmElMjBhJTIwZmFsbGFyJTNBJTBBbW9kZWwoaW5wdXRfaWRzKQ==",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"># Esta línea va a fallar:</span>
model(input_ids)`,wrap:!1}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function zl(m){let l,t,s,o;return l=new T({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEFzZXF1ZW5jZSUyMCUzRCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFpbnB1dF9pZHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoaWRzKSUwQSUyMyUyMEVzdGElMjBsJUMzJUFEbmVhJTIwdmElMjBhJTIwZmFsbGFyJTNBJTBBbW9kZWwoaW5wdXRfaWRzKQ==",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"># Esta línea va a fallar:</span>
model(input_ids)`,wrap:!1}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function Wl(m){let l,t,s,o;return l=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}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function Gl(m){let l,t,s,o;return l=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}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function Rl(m){let l,t;return l=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(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function Bl(m){let l,t;return l=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(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function Xl(m){let l,t;return l=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(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function Dl(m){let l,t;return l=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(){d(l.$$.fragment)},l(s){b(l.$$.fragment,s)},m(s,o){j(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){y(l,s)}}}function Fl(m){let l,t="✏️ <strong>Try it out!</strong> Convierte esta lista <code>batched_ids</code> en un tensor y pásalo por tu modelo. Comprueba que obtienes los mismos logits que antes (¡pero dos veces!).";return{c(){l=U("p"),l.innerHTML=t},l(s){l=J(s,"P",{"data-svelte-h":!0}),h(l)!=="svelte-8ypapr"&&(l.innerHTML=t)},m(s,o){p(s,l,o)},p:hl,d(s){s&&r(l)}}}function Hl(m){let l,t,s,o;return l=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}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function Sl(m){let l,t,s,o;return l=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}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function xl(m){let l,t,s,o;return l=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}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function Yl(m){let l,t,s,o;return l=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}}),s=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(){d(l.$$.fragment),t=i(),d(s.$$.fragment)},l(n){b(l.$$.fragment,n),t=c(n),b(s.$$.fragment,n)},m(n,f){j(l,n,f),p(n,t,f),j(s,n,f),o=!0},i(n){o||(M(l.$$.fragment,n),M(s.$$.fragment,n),o=!0)},o(n){u(l.$$.fragment,n),u(s.$$.fragment,n),o=!1},d(n){n&&r(t),y(l,n),y(s,n)}}}function ql(m){let l,t="✏️ <strong>Try it out!</strong> Aplique la tokenización manualmente a las dos frases utilizadas en la sección 2 (“Llevo toda la vida esperando un curso de HuggingFace” y “¡Odio tanto esto!”). Páselas por el modelo y compruebe que obtiene los mismos logits que en la sección 2. Ahora júntalos usando el token de relleno, y luego crea la máscara de atención adecuada. Comprueba que obtienes los mismos resultados al pasarlos por el modelo.";return{c(){l=U("p"),l.innerHTML=t},l(s){l=J(s,"P",{"data-svelte-h":!0}),h(l)!=="svelte-1vnhgir"&&(l.innerHTML=t)},m(s,o){p(s,l,o)},p:hl,d(s){s&&r(l)}}}function Ll(m){let l,t,s,o,n,f,D,Re,w,k,Ze,_,$,Ce,F,Zs="En la sección anterior, hemos explorado el caso de uso más sencillo: hacer inferencia sobre una única secuencia de poca longitud. Sin embargo, surgen algunas preguntas:",Be,H,Cs="<li>¿Cómo manejamos las secuencias múltiples?</li> <li>¿Cómo manejamos las secuencias múltiples <em>de diferentes longitudes</em>?</li> <li>¿Son los índices de vocabulario las únicas entradas que permiten que un modelo funcione bien?</li> <li>¿Existe una secuencia demasiado larga?</li>",Xe,S,Ns="Veamos qué tipo de problemas plantean estas preguntas, y cómo podemos resolverlos utilizando la API de Transformers 🤗.",De,x,Fe,Y,Qs="En el ejercicio anterior has visto cómo las secuencias se traducen en listas de números. Convirtamos esta lista de números en un tensor y enviémoslo al modelo:",He,I,g,Ne,q,Es="¡Oh, no! ¿Por qué ha fallado esto? “Hemos seguido los pasos de la tubería en la sección 2.",Se,L,Vs="El problema es que enviamos una sola secuencia al modelo, mientras que los modelos de 🤗 Transformers esperan múltiples frases por defecto. Aquí tratamos de hacer todo lo que el tokenizador hizo detrás de escena cuando lo aplicamos a una <code>secuencia</code>, pero si te fijas bien, verás que no sólo convirtió la lista de IDs de entrada en un tensor, sino que le agregó una dimensión encima:",xe,A,Z,Qe,K,vs="Intentémoslo de nuevo y añadamos una nueva dimensión encima:",Ye,C,N,Ee,P,zs="Imprimimos los IDs de entrada así como los logits resultantes - aquí está la salida:",qe,Q,E,Ve,O,Ws="<em>El “batching”</em> es el acto de enviar varias frases a través del modelo, todas a la vez. Si sólo tienes una frase, puedes construir un lote con una sola secuencia:",Le,ee,Ke,se,Gs="Se trata de un lote de dos secuencias idénticas.",Pe,G,Oe,le,Rs="La creación de lotes permite que el modelo funcione cuando lo alimentas con múltiples sentencias. Utilizar varias secuencias es tan sencillo como crear un lote con una sola secuencia. Sin embargo, hay un segundo problema. Cuando se trata de agrupar dos (o más) frases, éstas pueden ser de diferente longitud. Si alguna vez ha trabajado con tensores, sabrá que deben tener forma rectangular, por lo que no podrá convertir la lista de IDs de entrada en un tensor directamente. Para evitar este problema, usamos el <em>padding</em> para las entradas.",es,ne,ss,ae,Bs="La siguiente lista de listas no se puede convertir en un tensor:",ls,te,ns,re,Xs="Para solucionar esto, utilizaremos <em>padding</em> para que nuestros tensores tengan una forma rectangular. El acolchado asegura que todas nuestras sentencias tengan la misma longitud añadiendo una palabra especial llamada <em>padding token</em> a las sentencias con menos valores. Por ejemplo, si tienes 10 frases con 10 palabras y 1 frase con 20 palabras, el relleno asegurará que todas las frases tengan 20 palabras. En nuestro ejemplo, el tensor resultante tiene este aspecto:",as,pe,ts,oe,Ds="El ID del <em>padding token</em> se puede encontrar en <code>tokenizer.pad_token_id</code>. Usémoslo y enviemos nuestras dos sentencias a través del modelo de forma individual y por lotes:",rs,V,v,ve,ie,Fs="Hay un problema con los logits en nuestras predicciones por lotes: la segunda fila debería ser la misma que los logits de la segunda frase, ¡pero tenemos valores completamente diferentes!",ps,ce,Hs="Esto se debe a que la característica clave de los modelos Transformer son las capas de atención que <em>contextualizan</em> cada token. Éstas tendrán en cuenta los tokens de relleno, ya que atienden a todos los tokens de una secuencia. Para obtener el mismo resultado al pasar oraciones individuales de diferente longitud por el modelo o al pasar un lote con las mismas oraciones y el padding aplicado, tenemos que decirles a esas capas de atención que ignoren los tokens de padding. Esto se hace utilizando una máscara de atención.",os,ue,is,Me,Ss="<em>Las máscaras de atención</em> son tensores con la misma forma que el tensor de IDs de entrada, rellenados con 0s y 1s: los 1s indican que los tokens correspondientes deben ser atendidos, y los 0s indican que los tokens correspondientes no deben ser atendidos (es decir, deben ser ignorados por las capas de atención del modelo).",cs,z,W,ze,me,xs="Ahora obtenemos los mismos logits para la segunda frase del lote.",us,de,Ys="Podemos ver que el último valor de la segunda secuencia es un ID de relleno, que es un valor 0 en la máscara de atención.",Ms,R,ms,be,ds,je,qs="Con los modelos Transformer, hay un límite en la longitud de las secuencias que podemos pasar a los modelos. La mayoría de los modelos manejan secuencias de hasta 512 o 1024 tokens, y se bloquean cuando se les pide que procesen secuencias más largas. Hay dos soluciones a este problema:",bs,ye,Ls="<li>Usar un modelo que soporte secuencias largas</li> <li>Truncar tus secuencias</li>",js,fe,Ks='Los modelos tienen diferentes longitudes de secuencia soportadas, y algunos se especializan en el manejo de secuencias muy largas. Un ejemplo es <a href="https://huggingface.co/transformers/model_doc/longformer.html" rel="nofollow">Longformer</a> y otro es <a href="https://huggingface.co/transformers/model_doc/led.html" rel="nofollow">LED</a>. Si estás trabajando en una tarea que requiere secuencias muy largas, te recomendamos que eches un vistazo a esos modelos.',ys,Ue,Ps="En caso contrario, le recomendamos que trunque sus secuencias especificando el parámetro <code>max_sequence_length</code>:",fs,Je,Us,he,Js,We,hs;n=new Zl({props:{fw:m[0]}}),D=new Ge({props:{title:"Manejando Secuencias Múltiples",local:"manejando-secuencias-múltiples",headingTag:"h1"}});const Os=[Ql,Nl],Te=[];function el(e,a){return e[0]==="pt"?0:1}w=el(m),k=Te[w]=Os[w](m);const sl=[Vl,El],we=[];function ll(e,a){return e[0]==="pt"?0:1}_=ll(m),$=we[_]=sl[_](m),x=new Ge({props:{title:"Los modelos esperan Baches de entrada",local:"los-modelos-esperan-baches-de-entrada",headingTag:"h2"}});const nl=[zl,vl],ke=[];function al(e,a){return e[0]==="pt"?0:1}I=al(m),g=ke[I]=nl[I](m);const tl=[Gl,Wl],_e=[];function rl(e,a){return e[0]==="pt"?0:1}A=rl(m),Z=_e[A]=tl[A](m);const pl=[Bl,Rl],$e=[];function ol(e,a){return e[0]==="pt"?0:1}C=ol(m),N=$e[C]=pl[C](m);const il=[Dl,Xl],Ie=[];function cl(e,a){return e[0]==="pt"?0:1}Q=cl(m),E=Ie[Q]=il[Q](m),ee=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUJpZHMlMkMlMjBpZHMlNUQ=",highlighted:'<span class="hljs-attr">batched_ids</span> = [ids, ids]',wrap:!1}}),G=new Jl({props:{$$slots:{default:[Fl]},$$scope:{ctx:m}}}),ne=new Ge({props:{title:"Padding a las entradas",local:"padding-a-las-entradas",headingTag:"h2"}}),te=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}}),pe=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 ul=[Sl,Hl],ge=[];function Ml(e,a){return e[0]==="pt"?0:1}V=Ml(m),v=ge[V]=ul[V](m),ue=new Ge({props:{title:"Máscaras de atención",local:"máscaras-de-atención",headingTag:"h2"}});const ml=[Yl,xl],Ae=[];function dl(e,a){return e[0]==="pt"?0:1}return z=dl(m),W=Ae[z]=ml[z](m),R=new Jl({props:{$$slots:{default:[ql]},$$scope:{ctx:m}}}),be=new Ge({props:{title:"Secuencias largas",local:"secuencias-largas",headingTag:"h2"}}),Je=new T({props:{code:"c2VxdWVuY2UlMjAlM0QlMjBzZXF1ZW5jZSU1QiUzQW1heF9zZXF1ZW5jZV9sZW5ndGglNUQ=",highlighted:"sequence = sequence[:max_sequence_length]",wrap:!1}}),he=new Cl({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter2/5.mdx"}}),{c(){l=U("meta"),t=i(),s=U("p"),o=i(),d(n.$$.fragment),f=i(),d(D.$$.fragment),Re=i(),k.c(),Ze=i(),$.c(),Ce=i(),F=U("p"),F.textContent=Zs,Be=i(),H=U("ul"),H.innerHTML=Cs,Xe=i(),S=U("p"),S.textContent=Ns,De=i(),d(x.$$.fragment),Fe=i(),Y=U("p"),Y.textContent=Qs,He=i(),g.c(),Ne=i(),q=U("p"),q.textContent=Es,Se=i(),L=U("p"),L.innerHTML=Vs,xe=i(),Z.c(),Qe=i(),K=U("p"),K.textContent=vs,Ye=i(),N.c(),Ee=i(),P=U("p"),P.textContent=zs,qe=i(),E.c(),Ve=i(),O=U("p"),O.innerHTML=Ws,Le=i(),d(ee.$$.fragment),Ke=i(),se=U("p"),se.textContent=Gs,Pe=i(),d(G.$$.fragment),Oe=i(),le=U("p"),le.innerHTML=Rs,es=i(),d(ne.$$.fragment),ss=i(),ae=U("p"),ae.textContent=Bs,ls=i(),d(te.$$.fragment),ns=i(),re=U("p"),re.innerHTML=Xs,as=i(),d(pe.$$.fragment),ts=i(),oe=U("p"),oe.innerHTML=Ds,rs=i(),v.c(),ve=i(),ie=U("p"),ie.textContent=Fs,ps=i(),ce=U("p"),ce.innerHTML=Hs,os=i(),d(ue.$$.fragment),is=i(),Me=U("p"),Me.innerHTML=Ss,cs=i(),W.c(),ze=i(),me=U("p"),me.textContent=xs,us=i(),de=U("p"),de.textContent=Ys,Ms=i(),d(R.$$.fragment),ms=i(),d(be.$$.fragment),ds=i(),je=U("p"),je.textContent=qs,bs=i(),ye=U("ul"),ye.innerHTML=Ls,js=i(),fe=U("p"),fe.innerHTML=Ks,ys=i(),Ue=U("p"),Ue.innerHTML=Ps,fs=i(),d(Je.$$.fragment),Us=i(),d(he.$$.fragment),Js=i(),We=U("p"),this.h()},l(e){const a=gl("svelte-u9bgzb",document.head);l=J(a,"META",{name:!0,content:!0}),a.forEach(r),t=c(e),s=J(e,"P",{}),fl(s).forEach(r),o=c(e),b(n.$$.fragment,e),f=c(e),b(D.$$.fragment,e),Re=c(e),k.l(e),Ze=c(e),$.l(e),Ce=c(e),F=J(e,"P",{"data-svelte-h":!0}),h(F)!=="svelte-h651h9"&&(F.textContent=Zs),Be=c(e),H=J(e,"UL",{"data-svelte-h":!0}),h(H)!=="svelte-zg0t9o"&&(H.innerHTML=Cs),Xe=c(e),S=J(e,"P",{"data-svelte-h":!0}),h(S)!=="svelte-1ltkz08"&&(S.textContent=Ns),De=c(e),b(x.$$.fragment,e),Fe=c(e),Y=J(e,"P",{"data-svelte-h":!0}),h(Y)!=="svelte-1egow6h"&&(Y.textContent=Qs),He=c(e),g.l(e),Ne=c(e),q=J(e,"P",{"data-svelte-h":!0}),h(q)!=="svelte-736xyh"&&(q.textContent=Es),Se=c(e),L=J(e,"P",{"data-svelte-h":!0}),h(L)!=="svelte-2lbabp"&&(L.innerHTML=Vs),xe=c(e),Z.l(e),Qe=c(e),K=J(e,"P",{"data-svelte-h":!0}),h(K)!=="svelte-wofah5"&&(K.textContent=vs),Ye=c(e),N.l(e),Ee=c(e),P=J(e,"P",{"data-svelte-h":!0}),h(P)!=="svelte-759s5w"&&(P.textContent=zs),qe=c(e),E.l(e),Ve=c(e),O=J(e,"P",{"data-svelte-h":!0}),h(O)!=="svelte-1xl74d7"&&(O.innerHTML=Ws),Le=c(e),b(ee.$$.fragment,e),Ke=c(e),se=J(e,"P",{"data-svelte-h":!0}),h(se)!=="svelte-hm62ju"&&(se.textContent=Gs),Pe=c(e),b(G.$$.fragment,e),Oe=c(e),le=J(e,"P",{"data-svelte-h":!0}),h(le)!=="svelte-3e9taf"&&(le.innerHTML=Rs),es=c(e),b(ne.$$.fragment,e),ss=c(e),ae=J(e,"P",{"data-svelte-h":!0}),h(ae)!=="svelte-noazpb"&&(ae.textContent=Bs),ls=c(e),b(te.$$.fragment,e),ns=c(e),re=J(e,"P",{"data-svelte-h":!0}),h(re)!=="svelte-faqh1g"&&(re.innerHTML=Xs),as=c(e),b(pe.$$.fragment,e),ts=c(e),oe=J(e,"P",{"data-svelte-h":!0}),h(oe)!=="svelte-16kp46y"&&(oe.innerHTML=Ds),rs=c(e),v.l(e),ve=c(e),ie=J(e,"P",{"data-svelte-h":!0}),h(ie)!=="svelte-2nk0tq"&&(ie.textContent=Fs),ps=c(e),ce=J(e,"P",{"data-svelte-h":!0}),h(ce)!=="svelte-9bdy7e"&&(ce.innerHTML=Hs),os=c(e),b(ue.$$.fragment,e),is=c(e),Me=J(e,"P",{"data-svelte-h":!0}),h(Me)!=="svelte-1hi0yfg"&&(Me.innerHTML=Ss),cs=c(e),W.l(e),ze=c(e),me=J(e,"P",{"data-svelte-h":!0}),h(me)!=="svelte-gbnpcr"&&(me.textContent=xs),us=c(e),de=J(e,"P",{"data-svelte-h":!0}),h(de)!=="svelte-1qv8wvm"&&(de.textContent=Ys),Ms=c(e),b(R.$$.fragment,e),ms=c(e),b(be.$$.fragment,e),ds=c(e),je=J(e,"P",{"data-svelte-h":!0}),h(je)!=="svelte-slo5v2"&&(je.textContent=qs),bs=c(e),ye=J(e,"UL",{"data-svelte-h":!0}),h(ye)!=="svelte-12ixb0g"&&(ye.innerHTML=Ls),js=c(e),fe=J(e,"P",{"data-svelte-h":!0}),h(fe)!=="svelte-b27lh0"&&(fe.innerHTML=Ks),ys=c(e),Ue=J(e,"P",{"data-svelte-h":!0}),h(Ue)!=="svelte-1hfb3ti"&&(Ue.innerHTML=Ps),fs=c(e),b(Je.$$.fragment,e),Us=c(e),b(he.$$.fragment,e),Js=c(e),We=J(e,"P",{}),fl(We).forEach(r),this.h()},h(){Ul(l,"name","hf:doc:metadata"),Ul(l,"content",Kl)},m(e,a){Al(document.head,l),p(e,t,a),p(e,s,a),p(e,o,a),j(n,e,a),p(e,f,a),j(D,e,a),p(e,Re,a),Te[w].m(e,a),p(e,Ze,a),we[_].m(e,a),p(e,Ce,a),p(e,F,a),p(e,Be,a),p(e,H,a),p(e,Xe,a),p(e,S,a),p(e,De,a),j(x,e,a),p(e,Fe,a),p(e,Y,a),p(e,He,a),ke[I].m(e,a),p(e,Ne,a),p(e,q,a),p(e,Se,a),p(e,L,a),p(e,xe,a),_e[A].m(e,a),p(e,Qe,a),p(e,K,a),p(e,Ye,a),$e[C].m(e,a),p(e,Ee,a),p(e,P,a),p(e,qe,a),Ie[Q].m(e,a),p(e,Ve,a),p(e,O,a),p(e,Le,a),j(ee,e,a),p(e,Ke,a),p(e,se,a),p(e,Pe,a),j(G,e,a),p(e,Oe,a),p(e,le,a),p(e,es,a),j(ne,e,a),p(e,ss,a),p(e,ae,a),p(e,ls,a),j(te,e,a),p(e,ns,a),p(e,re,a),p(e,as,a),j(pe,e,a),p(e,ts,a),p(e,oe,a),p(e,rs,a),ge[V].m(e,a),p(e,ve,a),p(e,ie,a),p(e,ps,a),p(e,ce,a),p(e,os,a),j(ue,e,a),p(e,is,a),p(e,Me,a),p(e,cs,a),Ae[z].m(e,a),p(e,ze,a),p(e,me,a),p(e,us,a),p(e,de,a),p(e,Ms,a),j(R,e,a),p(e,ms,a),j(be,e,a),p(e,ds,a),p(e,je,a),p(e,bs,a),p(e,ye,a),p(e,js,a),p(e,fe,a),p(e,ys,a),p(e,Ue,a),p(e,fs,a),j(Je,e,a),p(e,Us,a),j(he,e,a),p(e,Js,a),p(e,We,a),hs=!0},p(e,[a]){const bl={};a&1&&(bl.fw=e[0]),n.$set(bl);let Ts=w;w=el(e),w!==Ts&&(X(),u(Te[Ts],1,1,()=>{Te[Ts]=null}),B(),k=Te[w],k||(k=Te[w]=Os[w](e),k.c()),M(k,1),k.m(Ze.parentNode,Ze));let ws=_;_=ll(e),_!==ws&&(X(),u(we[ws],1,1,()=>{we[ws]=null}),B(),$=we[_],$||($=we[_]=sl[_](e),$.c()),M($,1),$.m(Ce.parentNode,Ce));let ks=I;I=al(e),I!==ks&&(X(),u(ke[ks],1,1,()=>{ke[ks]=null}),B(),g=ke[I],g||(g=ke[I]=nl[I](e),g.c()),M(g,1),g.m(Ne.parentNode,Ne));let _s=A;A=rl(e),A!==_s&&(X(),u(_e[_s],1,1,()=>{_e[_s]=null}),B(),Z=_e[A],Z||(Z=_e[A]=tl[A](e),Z.c()),M(Z,1),Z.m(Qe.parentNode,Qe));let $s=C;C=ol(e),C!==$s&&(X(),u($e[$s],1,1,()=>{$e[$s]=null}),B(),N=$e[C],N||(N=$e[C]=pl[C](e),N.c()),M(N,1),N.m(Ee.parentNode,Ee));let Is=Q;Q=cl(e),Q!==Is&&(X(),u(Ie[Is],1,1,()=>{Ie[Is]=null}),B(),E=Ie[Q],E||(E=Ie[Q]=il[Q](e),E.c()),M(E,1),E.m(Ve.parentNode,Ve));const jl={};a&2&&(jl.$$scope={dirty:a,ctx:e}),G.$set(jl);let gs=V;V=Ml(e),V!==gs&&(X(),u(ge[gs],1,1,()=>{ge[gs]=null}),B(),v=ge[V],v||(v=ge[V]=ul[V](e),v.c()),M(v,1),v.m(ve.parentNode,ve));let As=z;z=dl(e),z!==As&&(X(),u(Ae[As],1,1,()=>{Ae[As]=null}),B(),W=Ae[z],W||(W=Ae[z]=ml[z](e),W.c()),M(W,1),W.m(ze.parentNode,ze));const yl={};a&2&&(yl.$$scope={dirty:a,ctx:e}),R.$set(yl)},i(e){hs||(M(n.$$.fragment,e),M(D.$$.fragment,e),M(k),M($),M(x.$$.fragment,e),M(g),M(Z),M(N),M(E),M(ee.$$.fragment,e),M(G.$$.fragment,e),M(ne.$$.fragment,e),M(te.$$.fragment,e),M(pe.$$.fragment,e),M(v),M(ue.$$.fragment,e),M(W),M(R.$$.fragment,e),M(be.$$.fragment,e),M(Je.$$.fragment,e),M(he.$$.fragment,e),hs=!0)},o(e){u(n.$$.fragment,e),u(D.$$.fragment,e),u(k),u($),u(x.$$.fragment,e),u(g),u(Z),u(N),u(E),u(ee.$$.fragment,e),u(G.$$.fragment,e),u(ne.$$.fragment,e),u(te.$$.fragment,e),u(pe.$$.fragment,e),u(v),u(ue.$$.fragment,e),u(W),u(R.$$.fragment,e),u(be.$$.fragment,e),u(Je.$$.fragment,e),u(he.$$.fragment,e),hs=!1},d(e){e&&(r(t),r(s),r(o),r(f),r(Re),r(Ze),r(Ce),r(F),r(Be),r(H),r(Xe),r(S),r(De),r(Fe),r(Y),r(He),r(Ne),r(q),r(Se),r(L),r(xe),r(Qe),r(K),r(Ye),r(Ee),r(P),r(qe),r(Ve),r(O),r(Le),r(Ke),r(se),r(Pe),r(Oe),r(le),r(es),r(ss),r(ae),r(ls),r(ns),r(re),r(as),r(ts),r(oe),r(rs),r(ve),r(ie),r(ps),r(ce),r(os),r(is),r(Me),r(cs),r(ze),r(me),r(us),r(de),r(Ms),r(ms),r(ds),r(je),r(bs),r(ye),r(js),r(fe),r(ys),r(Ue),r(fs),r(Us),r(Js),r(We)),r(l),y(n,e),y(D,e),Te[w].d(e),we[_].d(e),y(x,e),ke[I].d(e),_e[A].d(e),$e[C].d(e),Ie[Q].d(e),y(ee,e),y(G,e),y(ne,e),y(te,e),y(pe,e),ge[V].d(e),y(ue,e),Ae[z].d(e),y(R,e),y(be,e),y(Je,e),y(he,e)}}}const Kl='{"title":"Manejando Secuencias Múltiples","local":"manejando-secuencias-múltiples","sections":[{"title":"Los modelos esperan Baches de entrada","local":"los-modelos-esperan-baches-de-entrada","sections":[],"depth":2},{"title":"Padding a las entradas","local":"padding-a-las-entradas","sections":[],"depth":2},{"title":"Máscaras de atención","local":"máscaras-de-atención","sections":[],"depth":2},{"title":"Secuencias largas","local":"secuencias-largas","sections":[],"depth":2}],"depth":1}';function Pl(m,l,t){let s="pt";return _l(()=>{const o=new URLSearchParams(window.location.search);t(0,s=o.get("fw")||"pt")}),[s]}class on extends $l{constructor(l){super(),Il(this,l,Pl,Ll,kl,{})}}export{on as component};
