import{s as Tl,o as wl,n as Ul}from"../chunks/scheduler.37c15a92.js";import{S as kl,i as _l,g as U,s as i,r as b,A as $l,h as J,f as r,c,j as jl,u as j,x as h,k as yl,y as Il,a as p,v as y,t as u,b as B,d as M,w as f,p as X}from"../chunks/index.2bf4358c.js";import{T as fl}from"../chunks/Tip.363c041f.js";import{Y as Jl}from"../chunks/Youtube.1e50a667.js";import{C as T}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as hl}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{F as gl}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as We}from"../chunks/Heading.8ada512a.js";function Al(m){let l,t;return l=new hl({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(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Zl(m){let l,t;return l=new hl({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(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Cl(m){let l,t;return l=new Jl({props:{id:"ROxrFOEbsQE"}}),{c(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Nl(m){let l,t;return l=new Jl({props:{id:"M6adb1j2jPI"}}),{c(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Ql(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function El(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function Vl(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function vl(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function zl(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(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Wl(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(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Gl(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(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Rl(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(){b(l.$$.fragment)},l(s){j(l.$$.fragment,s)},m(s,o){y(l,s,o),t=!0},i(s){t||(M(l.$$.fragment,s),t=!0)},o(s){u(l.$$.fragment,s),t=!1},d(s){f(l,s)}}}function Bl(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:Ul,d(s){s&&r(l)}}}function Xl(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function Dl(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function Fl(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function Hl(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(){b(l.$$.fragment),t=i(),b(s.$$.fragment)},l(n){j(l.$$.fragment,n),t=c(n),j(s.$$.fragment,n)},m(n,d){y(l,n,d),p(n,t,d),y(s,n,d),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),f(l,n),f(s,n)}}}function Sl(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:Ul,d(s){s&&r(l)}}}function xl(m){let l,t,s,o,n,d,D,Ge,w,k,Ae,_,$,Ze,F,gs="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:",Re,H,As="<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>",Be,S,Zs="Veamos qué tipo de problemas plantean estas preguntas, y cómo podemos resolverlos utilizando la API de Transformers 🤗.",Xe,x,De,Y,Cs="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:",Fe,I,g,Ce,q,Ns="¡Oh, no! ¿Por qué ha fallado esto? “Hemos seguido los pasos de la tubería en la sección 2.",He,L,Qs="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:",Se,A,Z,Ne,K,Es="Intentémoslo de nuevo y añadamos una nueva dimensión encima:",xe,C,N,Qe,P,Vs="Imprimimos los IDs de entrada así como los logits resultantes - aquí está la salida:",Ye,Q,E,Ee,O,vs="<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:",qe,ee,Le,se,zs="Se trata de un lote de dos secuencias idénticas.",Ke,G,Pe,le,Ws="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.",Oe,ne,es,ae,Gs="La siguiente lista de listas no se puede convertir en un tensor:",ss,te,ls,re,Rs="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:",ns,pe,as,oe,Bs="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:",ts,V,v,Ve,ie,Xs="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!",rs,ce,Ds="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.",ps,ue,os,Me,Fs="<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).",is,z,W,ve,me,Hs="Ahora obtenemos los mismos logits para la segunda frase del lote.",cs,de,Ss="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.",us,R,Ms,be,ms,je,xs="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:",ds,ye,Ys="<li>Usar un modelo que soporte secuencias largas</li> <li>Truncar tus secuencias</li>",bs,fe,qs='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.',js,Ue,Ls="En caso contrario, le recomendamos que trunque sus secuencias especificando el parámetro <code>max_sequence_length</code>:",ys,Je,fs,ze,Us;n=new gl({props:{fw:m[0]}}),D=new We({props:{title:"Manejando Secuencias Múltiples",local:"manejando-secuencias-múltiples",headingTag:"h1"}});const Ks=[Zl,Al],he=[];function Ps(e,a){return e[0]==="pt"?0:1}w=Ps(m),k=he[w]=Ks[w](m);const Os=[Nl,Cl],Te=[];function el(e,a){return e[0]==="pt"?0:1}_=el(m),$=Te[_]=Os[_](m),x=new We({props:{title:"Los modelos esperan Baches de entrada",local:"los-modelos-esperan-baches-de-entrada",headingTag:"h2"}});const sl=[El,Ql],we=[];function ll(e,a){return e[0]==="pt"?0:1}I=ll(m),g=we[I]=sl[I](m);const nl=[vl,Vl],ke=[];function al(e,a){return e[0]==="pt"?0:1}A=al(m),Z=ke[A]=nl[A](m);const tl=[Wl,zl],_e=[];function rl(e,a){return e[0]==="pt"?0:1}C=rl(m),N=_e[C]=tl[C](m);const pl=[Rl,Gl],$e=[];function ol(e,a){return e[0]==="pt"?0:1}Q=ol(m),E=$e[Q]=pl[Q](m),ee=new T({props:{code:"YmF0Y2hlZF9pZHMlMjAlM0QlMjAlNUJpZHMlMkMlMjBpZHMlNUQ=",highlighted:'<span class="hljs-attr">batched_ids</span> = [ids, ids]',wrap:!1}}),G=new fl({props:{$$slots:{default:[Bl]},$$scope:{ctx:m}}}),ne=new We({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 il=[Dl,Xl],Ie=[];function cl(e,a){return e[0]==="pt"?0:1}V=cl(m),v=Ie[V]=il[V](m),ue=new We({props:{title:"Máscaras de atención",local:"máscaras-de-atención",headingTag:"h2"}});const ul=[Hl,Fl],ge=[];function Ml(e,a){return e[0]==="pt"?0:1}return z=Ml(m),W=ge[z]=ul[z](m),R=new fl({props:{$$slots:{default:[Sl]},$$scope:{ctx:m}}}),be=new We({props:{title:"Secuencias largas",local:"secuencias-largas",headingTag:"h2"}}),Je=new T({props:{code:"c2VxdWVuY2UlMjAlM0QlMjBzZXF1ZW5jZSU1QiUzQW1heF9zZXF1ZW5jZV9sZW5ndGglNUQ=",highlighted:"sequence = sequence[:max_sequence_length]",wrap:!1}}),{c(){l=U("meta"),t=i(),s=U("p"),o=i(),b(n.$$.fragment),d=i(),b(D.$$.fragment),Ge=i(),k.c(),Ae=i(),$.c(),Ze=i(),F=U("p"),F.textContent=gs,Re=i(),H=U("ul"),H.innerHTML=As,Be=i(),S=U("p"),S.textContent=Zs,Xe=i(),b(x.$$.fragment),De=i(),Y=U("p"),Y.textContent=Cs,Fe=i(),g.c(),Ce=i(),q=U("p"),q.textContent=Ns,He=i(),L=U("p"),L.innerHTML=Qs,Se=i(),Z.c(),Ne=i(),K=U("p"),K.textContent=Es,xe=i(),N.c(),Qe=i(),P=U("p"),P.textContent=Vs,Ye=i(),E.c(),Ee=i(),O=U("p"),O.innerHTML=vs,qe=i(),b(ee.$$.fragment),Le=i(),se=U("p"),se.textContent=zs,Ke=i(),b(G.$$.fragment),Pe=i(),le=U("p"),le.innerHTML=Ws,Oe=i(),b(ne.$$.fragment),es=i(),ae=U("p"),ae.textContent=Gs,ss=i(),b(te.$$.fragment),ls=i(),re=U("p"),re.innerHTML=Rs,ns=i(),b(pe.$$.fragment),as=i(),oe=U("p"),oe.innerHTML=Bs,ts=i(),v.c(),Ve=i(),ie=U("p"),ie.textContent=Xs,rs=i(),ce=U("p"),ce.innerHTML=Ds,ps=i(),b(ue.$$.fragment),os=i(),Me=U("p"),Me.innerHTML=Fs,is=i(),W.c(),ve=i(),me=U("p"),me.textContent=Hs,cs=i(),de=U("p"),de.textContent=Ss,us=i(),b(R.$$.fragment),Ms=i(),b(be.$$.fragment),ms=i(),je=U("p"),je.textContent=xs,ds=i(),ye=U("ul"),ye.innerHTML=Ys,bs=i(),fe=U("p"),fe.innerHTML=qs,js=i(),Ue=U("p"),Ue.innerHTML=Ls,ys=i(),b(Je.$$.fragment),fs=i(),ze=U("p"),this.h()},l(e){const a=$l("svelte-u9bgzb",document.head);l=J(a,"META",{name:!0,content:!0}),a.forEach(r),t=c(e),s=J(e,"P",{}),jl(s).forEach(r),o=c(e),j(n.$$.fragment,e),d=c(e),j(D.$$.fragment,e),Ge=c(e),k.l(e),Ae=c(e),$.l(e),Ze=c(e),F=J(e,"P",{"data-svelte-h":!0}),h(F)!=="svelte-h651h9"&&(F.textContent=gs),Re=c(e),H=J(e,"UL",{"data-svelte-h":!0}),h(H)!=="svelte-zg0t9o"&&(H.innerHTML=As),Be=c(e),S=J(e,"P",{"data-svelte-h":!0}),h(S)!=="svelte-1ltkz08"&&(S.textContent=Zs),Xe=c(e),j(x.$$.fragment,e),De=c(e),Y=J(e,"P",{"data-svelte-h":!0}),h(Y)!=="svelte-1egow6h"&&(Y.textContent=Cs),Fe=c(e),g.l(e),Ce=c(e),q=J(e,"P",{"data-svelte-h":!0}),h(q)!=="svelte-736xyh"&&(q.textContent=Ns),He=c(e),L=J(e,"P",{"data-svelte-h":!0}),h(L)!=="svelte-2lbabp"&&(L.innerHTML=Qs),Se=c(e),Z.l(e),Ne=c(e),K=J(e,"P",{"data-svelte-h":!0}),h(K)!=="svelte-wofah5"&&(K.textContent=Es),xe=c(e),N.l(e),Qe=c(e),P=J(e,"P",{"data-svelte-h":!0}),h(P)!=="svelte-759s5w"&&(P.textContent=Vs),Ye=c(e),E.l(e),Ee=c(e),O=J(e,"P",{"data-svelte-h":!0}),h(O)!=="svelte-1xl74d7"&&(O.innerHTML=vs),qe=c(e),j(ee.$$.fragment,e),Le=c(e),se=J(e,"P",{"data-svelte-h":!0}),h(se)!=="svelte-hm62ju"&&(se.textContent=zs),Ke=c(e),j(G.$$.fragment,e),Pe=c(e),le=J(e,"P",{"data-svelte-h":!0}),h(le)!=="svelte-3e9taf"&&(le.innerHTML=Ws),Oe=c(e),j(ne.$$.fragment,e),es=c(e),ae=J(e,"P",{"data-svelte-h":!0}),h(ae)!=="svelte-noazpb"&&(ae.textContent=Gs),ss=c(e),j(te.$$.fragment,e),ls=c(e),re=J(e,"P",{"data-svelte-h":!0}),h(re)!=="svelte-faqh1g"&&(re.innerHTML=Rs),ns=c(e),j(pe.$$.fragment,e),as=c(e),oe=J(e,"P",{"data-svelte-h":!0}),h(oe)!=="svelte-16kp46y"&&(oe.innerHTML=Bs),ts=c(e),v.l(e),Ve=c(e),ie=J(e,"P",{"data-svelte-h":!0}),h(ie)!=="svelte-2nk0tq"&&(ie.textContent=Xs),rs=c(e),ce=J(e,"P",{"data-svelte-h":!0}),h(ce)!=="svelte-9bdy7e"&&(ce.innerHTML=Ds),ps=c(e),j(ue.$$.fragment,e),os=c(e),Me=J(e,"P",{"data-svelte-h":!0}),h(Me)!=="svelte-1hi0yfg"&&(Me.innerHTML=Fs),is=c(e),W.l(e),ve=c(e),me=J(e,"P",{"data-svelte-h":!0}),h(me)!=="svelte-gbnpcr"&&(me.textContent=Hs),cs=c(e),de=J(e,"P",{"data-svelte-h":!0}),h(de)!=="svelte-1qv8wvm"&&(de.textContent=Ss),us=c(e),j(R.$$.fragment,e),Ms=c(e),j(be.$$.fragment,e),ms=c(e),je=J(e,"P",{"data-svelte-h":!0}),h(je)!=="svelte-slo5v2"&&(je.textContent=xs),ds=c(e),ye=J(e,"UL",{"data-svelte-h":!0}),h(ye)!=="svelte-12ixb0g"&&(ye.innerHTML=Ys),bs=c(e),fe=J(e,"P",{"data-svelte-h":!0}),h(fe)!=="svelte-b27lh0"&&(fe.innerHTML=qs),js=c(e),Ue=J(e,"P",{"data-svelte-h":!0}),h(Ue)!=="svelte-1hfb3ti"&&(Ue.innerHTML=Ls),ys=c(e),j(Je.$$.fragment,e),fs=c(e),ze=J(e,"P",{}),jl(ze).forEach(r),this.h()},h(){yl(l,"name","hf:doc:metadata"),yl(l,"content",Yl)},m(e,a){Il(document.head,l),p(e,t,a),p(e,s,a),p(e,o,a),y(n,e,a),p(e,d,a),y(D,e,a),p(e,Ge,a),he[w].m(e,a),p(e,Ae,a),Te[_].m(e,a),p(e,Ze,a),p(e,F,a),p(e,Re,a),p(e,H,a),p(e,Be,a),p(e,S,a),p(e,Xe,a),y(x,e,a),p(e,De,a),p(e,Y,a),p(e,Fe,a),we[I].m(e,a),p(e,Ce,a),p(e,q,a),p(e,He,a),p(e,L,a),p(e,Se,a),ke[A].m(e,a),p(e,Ne,a),p(e,K,a),p(e,xe,a),_e[C].m(e,a),p(e,Qe,a),p(e,P,a),p(e,Ye,a),$e[Q].m(e,a),p(e,Ee,a),p(e,O,a),p(e,qe,a),y(ee,e,a),p(e,Le,a),p(e,se,a),p(e,Ke,a),y(G,e,a),p(e,Pe,a),p(e,le,a),p(e,Oe,a),y(ne,e,a),p(e,es,a),p(e,ae,a),p(e,ss,a),y(te,e,a),p(e,ls,a),p(e,re,a),p(e,ns,a),y(pe,e,a),p(e,as,a),p(e,oe,a),p(e,ts,a),Ie[V].m(e,a),p(e,Ve,a),p(e,ie,a),p(e,rs,a),p(e,ce,a),p(e,ps,a),y(ue,e,a),p(e,os,a),p(e,Me,a),p(e,is,a),ge[z].m(e,a),p(e,ve,a),p(e,me,a),p(e,cs,a),p(e,de,a),p(e,us,a),y(R,e,a),p(e,Ms,a),y(be,e,a),p(e,ms,a),p(e,je,a),p(e,ds,a),p(e,ye,a),p(e,bs,a),p(e,fe,a),p(e,js,a),p(e,Ue,a),p(e,ys,a),y(Je,e,a),p(e,fs,a),p(e,ze,a),Us=!0},p(e,[a]){const ml={};a&1&&(ml.fw=e[0]),n.$set(ml);let Js=w;w=Ps(e),w!==Js&&(X(),u(he[Js],1,1,()=>{he[Js]=null}),B(),k=he[w],k||(k=he[w]=Ks[w](e),k.c()),M(k,1),k.m(Ae.parentNode,Ae));let hs=_;_=el(e),_!==hs&&(X(),u(Te[hs],1,1,()=>{Te[hs]=null}),B(),$=Te[_],$||($=Te[_]=Os[_](e),$.c()),M($,1),$.m(Ze.parentNode,Ze));let Ts=I;I=ll(e),I!==Ts&&(X(),u(we[Ts],1,1,()=>{we[Ts]=null}),B(),g=we[I],g||(g=we[I]=sl[I](e),g.c()),M(g,1),g.m(Ce.parentNode,Ce));let ws=A;A=al(e),A!==ws&&(X(),u(ke[ws],1,1,()=>{ke[ws]=null}),B(),Z=ke[A],Z||(Z=ke[A]=nl[A](e),Z.c()),M(Z,1),Z.m(Ne.parentNode,Ne));let ks=C;C=rl(e),C!==ks&&(X(),u(_e[ks],1,1,()=>{_e[ks]=null}),B(),N=_e[C],N||(N=_e[C]=tl[C](e),N.c()),M(N,1),N.m(Qe.parentNode,Qe));let _s=Q;Q=ol(e),Q!==_s&&(X(),u($e[_s],1,1,()=>{$e[_s]=null}),B(),E=$e[Q],E||(E=$e[Q]=pl[Q](e),E.c()),M(E,1),E.m(Ee.parentNode,Ee));const dl={};a&2&&(dl.$$scope={dirty:a,ctx:e}),G.$set(dl);let $s=V;V=cl(e),V!==$s&&(X(),u(Ie[$s],1,1,()=>{Ie[$s]=null}),B(),v=Ie[V],v||(v=Ie[V]=il[V](e),v.c()),M(v,1),v.m(Ve.parentNode,Ve));let Is=z;z=Ml(e),z!==Is&&(X(),u(ge[Is],1,1,()=>{ge[Is]=null}),B(),W=ge[z],W||(W=ge[z]=ul[z](e),W.c()),M(W,1),W.m(ve.parentNode,ve));const bl={};a&2&&(bl.$$scope={dirty:a,ctx:e}),R.$set(bl)},i(e){Us||(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),Us=!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),Us=!1},d(e){e&&(r(t),r(s),r(o),r(d),r(Ge),r(Ae),r(Ze),r(F),r(Re),r(H),r(Be),r(S),r(Xe),r(De),r(Y),r(Fe),r(Ce),r(q),r(He),r(L),r(Se),r(Ne),r(K),r(xe),r(Qe),r(P),r(Ye),r(Ee),r(O),r(qe),r(Le),r(se),r(Ke),r(Pe),r(le),r(Oe),r(es),r(ae),r(ss),r(ls),r(re),r(ns),r(as),r(oe),r(ts),r(Ve),r(ie),r(rs),r(ce),r(ps),r(os),r(Me),r(is),r(ve),r(me),r(cs),r(de),r(us),r(Ms),r(ms),r(je),r(ds),r(ye),r(bs),r(fe),r(js),r(Ue),r(ys),r(fs),r(ze)),r(l),f(n,e),f(D,e),he[w].d(e),Te[_].d(e),f(x,e),we[I].d(e),ke[A].d(e),_e[C].d(e),$e[Q].d(e),f(ee,e),f(G,e),f(ne,e),f(te,e),f(pe,e),Ie[V].d(e),f(ue,e),ge[z].d(e),f(R,e),f(be,e),f(Je,e)}}}const Yl='{"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 ql(m,l,t){let s="pt";return wl(()=>{const o=new URLSearchParams(window.location.search);t(0,s=o.get("fw")||"pt")}),[s]}class an extends kl{constructor(l){super(),_l(this,l,ql,xl,Tl,{})}}export{an as component};
