Buckets:
| import{s as Bt,o as Rt}from"../chunks/scheduler.505acc25.js";import{S as Ft,i as Xt,e as o,s as a,c as r,h as Yt,a as i,d as t,b as n,f as Wt,g as m,j as p,k as Qe,l as Kt,m as l,n as d,t as u,o as c,p as M}from"../chunks/index.e22abd30.js";import{C as Ot,H as ze,E as el}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a144e953.js";import{Y as sl}from"../chunks/Youtube.7545e4b1.js";import{C as y}from"../chunks/CodeBlock.f6688f67.js";import{C as tl}from"../chunks/CourseFloatingBanner.f0a2dc21.js";import{F as ll}from"../chunks/FrameworkSwitchCourse.c2af54e8.js";function al(tt){let f,qe,b,Le,T,He,C,Ve,J,De,$,Ge,w,Pe,v,lt='Empecemos con un ejemplo completo para ver qué pasó entre bastidores cuando ejecutamos el siguiente código en el <a href="/course/chapter1">Capítulo 1</a>:',Ze,g,Se,x,at="y obtuvimos:",We,k,Be,I,nt='Como vimos en el <a href="/course/chapter1">Capítulo 1</a>, este pipeline agrupa tres pasos: preprocesamiento, pasar las entradas por el modelo y posprocesamiento:',Re,h,ot='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/full_nlp_pipeline.svg" alt="El pipeline completo de PLN: tokenización del texto, conversión a IDs e inferencia a través del modelo Transformer y la cabeza del modelo."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/full_nlp_pipeline-dark.svg" alt="El pipeline completo de PLN: tokenización del texto, conversión a IDs e inferencia a través del modelo Transformer y la cabeza del modelo."/>',Fe,A,it="Repasemos cada uno rápidamente.",Xe,E,Ye,_,pt="Como otras redes neuronales, los modelos Transformer no pueden procesar texto crudo directamente, así que el primer paso de nuestro pipeline es convertir las entradas de texto en números que el modelo pueda entender. Para eso usamos un <em>tokenizador</em>, que se encargará de:",Ke,q,rt="<li>Dividir la entrada en palabras, subpalabras o símbolos (como signos de puntuación) llamados <em>tokens</em></li> <li>Asignar un entero a cada token</li> <li>Añadir entradas adicionales que puedan ser útiles para el modelo</li>",Oe,L,mt='Todo este preprocesamiento debe hacerse exactamente igual que cuando se preentrenó el modelo, así que primero necesitamos descargar esa información del <a href="https://huggingface.co/models" rel="nofollow">Model Hub</a>. Para eso usamos la clase <code>AutoTokenizer</code> y su método <code>from_pretrained()</code>. Usando el nombre del checkpoint de nuestro modelo, recuperará automáticamente los datos asociados al tokenizador del modelo y los almacenará en caché (así que solo se descargarán la primera vez que ejecutes el código de abajo).',es,z,dt='Como el checkpoint por defecto del pipeline <code>sentiment-analysis</code> es <code>distilbert-base-uncased-finetuned-sst-2-english</code> (puedes ver su model card <a href="https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english" rel="nofollow">aquí</a>), ejecutamos lo siguiente:',ss,N,ts,Q,ut="Una vez que tenemos el tokenizador, podemos pasarle directamente nuestras frases y nos devolverá un diccionario listo para alimentar al modelo. Lo único que queda por hacer es convertir la lista de IDs de entrada en tensores.",ls,H,ct="Puedes usar 🤗 Transformers sin tener que preocuparte de qué framework de ML se usa como backend; para algunos modelos puede ser PyTorch o Flax. Sin embargo, los modelos Transformer solo aceptan <em>tensores</em> como entrada. Si es la primera vez que oyes hablar de tensores, puedes pensar en ellos como arrays de NumPy. Un array de NumPy puede ser un escalar (0D), un vector (1D), una matriz (2D) o tener más dimensiones. En la práctica es un tensor; los tensores de otros frameworks de ML se comportan de forma parecida y normalmente son tan fáciles de crear como los arrays de NumPy.",as,V,Mt="Para especificar el tipo de tensores que queremos recibir (PyTorch o NumPy plano), usamos el argumento <code>return_tensors</code>:",ns,D,os,G,yt="No te preocupes todavía por el relleno y el truncado; los explicaremos más adelante. Lo principal aquí es recordar que puedes pasar una frase o una lista de frases, además de especificar el tipo de tensores que quieres recibir de vuelta (si no pasas ningún tipo, obtendrás como resultado una lista de listas).",is,P,ft="Así se ven los resultados como tensores de PyTorch:",ps,Z,rs,S,bt="La salida en sí es un diccionario con dos llaves, <code>input_ids</code> y <code>attention_mask</code>. <code>input_ids</code> contiene dos filas de enteros (una por cada frase) que son los identificadores únicos de los tokens en cada frase. Más adelante en este capítulo explicaremos qué es <code>attention_mask</code>.",ms,W,ds,B,Tt="Podemos descargar nuestro modelo preentrenado igual que hicimos con el tokenizador. 🤗 Transformers ofrece una clase <code>AutoModel</code> que también tiene un método <code>from_pretrained()</code>:",us,R,cs,F,ht="En este fragmento de código hemos descargado el mismo checkpoint que usamos antes en nuestro pipeline (de hecho, debería haber quedado ya almacenado en caché) y hemos instanciado un modelo con él.",Ms,X,jt="Esta arquitectura contiene solo el módulo Transformer base: dadas unas entradas, produce lo que llamaremos <em>hidden states</em>, también conocidos como <em>features</em>. Para cada entrada del modelo, obtendremos un vector de alta dimensión que representa la <strong>comprensión contextual de esa entrada por parte del modelo Transformer</strong>.",ys,Y,Ut="Si esto no te queda claro, no pasa nada. Más adelante lo explicaremos todo.",fs,K,Ct='Aunque estos hidden states pueden ser útiles por sí solos, normalmente sirven como entradas para otra parte del modelo, conocida como la <em>head</em>. En el <a href="/course/chapter1">Capítulo 1</a>, distintas tareas podían resolverse con la misma arquitectura, pero cada una de esas tareas tendrá una head diferente asociada.',bs,O,Ts,ee,Jt="El vector que produce el módulo Transformer suele ser grande. Por lo general tiene tres dimensiones:",hs,se,$t="<li><strong>Batch size</strong>: El número de secuencias procesadas al mismo tiempo (2 en nuestro ejemplo).</li> <li><strong>Sequence length</strong>: La longitud de la representación numérica de la secuencia (16 en nuestro ejemplo).</li> <li><strong>Hidden size</strong>: La dimensión del vector de cada entrada del modelo.</li>",js,te,wt="Se dice que es “de alta dimensión” por el último valor. El hidden size puede ser muy grande (768 es habitual en modelos pequeños, y en modelos más grandes puede llegar a 3072 o más).",Us,le,vt="Podemos verlo si pasamos al modelo las entradas que preprocesamos:",Cs,ae,Js,ne,$s,oe,gt="Fíjate en que las salidas de los modelos de 🤗 Transformers se comportan como <code>namedtuple</code>s o diccionarios. Puedes acceder a los elementos por atributos (como hicimos nosotros), por llave (<code>outputs["last_hidden_state"]</code>) o incluso por índice si sabes exactamente dónde está lo que buscas (<code>outputs[0]</code>).",ws,ie,vs,pe,xt="Las cabezas de modelo toman como entrada el vector de alta dimensión de los hidden states y lo proyectan sobre una dimensión distinta. Normalmente están compuestas por una o unas pocas capas lineales:",gs,j,kt='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/transformer_and_head.svg" alt="Una red Transformer junto a su cabeza."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/transformer_and_head-dark.svg" alt="Una red Transformer junto a su cabeza."/>',xs,re,It="La salida del modelo Transformer se envía directamente a la cabeza del modelo para ser procesada.",ks,me,At="En este diagrama, el modelo está representado por su capa de embeddings y las capas posteriores. La capa de embeddings convierte cada ID de entrada del input tokenizado en un vector que representa el token asociado. Las capas posteriores manipulan esos vectores usando el mecanismo de atención para producir la representación final de las frases.",Is,de,Et="Hay muchas arquitecturas distintas disponibles en 🤗 Transformers, y cada una está diseñada para abordar una tarea concreta. Aquí tienes una lista no exhaustiva:",As,ue,_t="<li><code>*Model</code> (recupera los hidden states)</li> <li><code>*ForCausalLM</code></li> <li><code>*ForMaskedLM</code></li> <li><code>*ForMultipleChoice</code></li> <li><code>*ForQuestionAnswering</code></li> <li><code>*ForSequenceClassification</code></li> <li><code>*ForTokenClassification</code></li> <li>y otras más 🤗</li>",Es,ce,qt="Para nuestro ejemplo, necesitaremos un modelo con una cabeza de clasificación de secuencias (para poder clasificar las frases como positivas o negativas). Así que en realidad no usaremos la clase <code>AutoModel</code>, sino <code>AutoModelForSequenceClassification</code>:",_s,Me,qs,ye,Lt="Ahora, si miramos la forma de nuestras salidas, la dimensionalidad será mucho menor: la cabeza del modelo toma como entrada los vectores de alta dimensión que vimos antes y produce vectores con dos valores (uno por etiqueta):",Ls,fe,zs,be,Ns,Te,zt="Como solo tenemos dos frases y dos etiquetas, el resultado que obtenemos de nuestro modelo tiene forma 2 x 2.",Qs,he,Hs,je,Nt="Los valores que obtenemos como salida del modelo no tienen por qué tener sentido por sí solos. Echemos un vistazo:",Vs,Ue,Ds,Ce,Gs,Je,Qt='Nuestro modelo predijo <code>[-1.5607, 1.6123]</code> para la primera frase y <code>[ 4.1692, -3.3464]</code> para la segunda. Eso no son probabilidades, sino <em>logits</em>, las puntuaciones crudas y no normalizadas que produce la última capa del modelo. Para convertirlas en probabilidades, tienen que pasar por una capa <a href="https://en.wikipedia.org/wiki/Softmax_function" rel="nofollow">SoftMax</a> (todos los modelos de 🤗 Transformers producen logits, ya que la función de pérdida para el entrenamiento suele fusionar la última función de activación, como SoftMax, con la función de pérdida propiamente dicha, como la entropía cruzada):',Ps,$e,Zs,we,Ss,ve,Ht="Ahora podemos ver que el modelo predijo <code>[0.0402, 0.9598]</code> para la primera frase y <code>[0.9995, 0.0005]</code> para la segunda. Estas ya son puntuaciones de probabilidad reconocibles.",Ws,ge,Vt="Para obtener las etiquetas correspondientes a cada posición, podemos inspeccionar el atributo <code>id2label</code> de la configuración del modelo (más sobre esto en la siguiente sección):",Bs,xe,Rs,ke,Fs,Ie,Dt="Ahora podemos concluir que el modelo predijo lo siguiente:",Xs,Ae,Gt="<li>Primera frase: NEGATIVE: 0.0402, POSITIVE: 0.9598</li> <li>Segunda frase: NEGATIVE: 0.9995, POSITIVE: 0.0005</li>",Ys,Ee,Pt="Hemos reproducido con éxito los tres pasos del pipeline: preprocesamiento con tokenizadores, pasar las entradas por el modelo y posprocesamiento. Ahora vamos a dedicar un poco de tiempo a profundizar en cada uno de esos pasos.",Ks,U,Zt="<p>✏️ <strong>Pruébalo</strong> Elige dos textos (o más) tuyos y pásalos por el pipeline <code>sentiment-analysis</code>. Luego reproduce tú mismo los pasos que viste aquí y comprueba que obtienes los mismos resultados.</p>",Os,_e,et,Ne,st;return T=new ll({props:{fw:tt[0]}}),C=new Ot({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),J=new ze({props:{title:"Detrás del pipeline",local:"behind-the-pipeline",headingTag:"h1"}}),$=new tl({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/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/es/chapter2/section2_pt.ipynb"}]}}),w=new sl({props:{id:"1pedAIvTWXk"}}),g=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2xhc3NpZmllciUyMCUzRCUyMHBpcGVsaW5lKCUyMnNlbnRpbWVudC1hbmFseXNpcyUyMiklMEFjbGFzc2lmaWVyKCUwQSUyMCUyMCUyMCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElMjAlMjAlMjAlMjAlNUQlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline | |
| classifier = pipeline(<span class="hljs-string">"sentiment-analysis"</span>) | |
| classifier( | |
| [ | |
| <span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, | |
| <span class="hljs-string">"I hate this so much!"</span>, | |
| ] | |
| )`,wrap:!1}}),k=new y({props:{code:"JTVCJTdCJ2xhYmVsJyUzQSUyMCdQT1NJVElWRSclMkMlMjAnc2NvcmUnJTNBJTIwMC45NTk4MDQ3MTM3MjYwNDM3JTdEJTJDJTBBJTIwJTdCJ2xhYmVsJyUzQSUyMCdORUdBVElWRSclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTk0NTU4MDk1OTMyMDA3JTdEJTVE",highlighted:`[{<span class="hljs-string">'label'</span>: <span class="hljs-string">'POSITIVE'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9598047137260437</span>}, | |
| {<span class="hljs-string">'label'</span>: <span class="hljs-string">'NEGATIVE'</span>, <span class="hljs-string">'score'</span>: <span class="hljs-number">0.9994558095932007</span>}]`,wrap:!1}}),E=new ze({props:{title:"Preprocesamiento con un tokenizador",local:"preprocessing-with-a-tokenizer",headingTag:"h2"}}),N=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| checkpoint = <span class="hljs-string">"distilbert-base-uncased-finetuned-sst-2-english"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),D=new y({props:{code:"cmF3X2lucHV0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElNUQlMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIocmF3X2lucHV0cyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQXByaW50KGlucHV0cyk=",highlighted:`raw_inputs = [ | |
| <span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, | |
| <span class="hljs-string">"I hate this so much!"</span>, | |
| ] | |
| inputs = tokenizer(raw_inputs, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">"pt"</span>) | |
| <span class="hljs-built_in">print</span>(inputs)`,wrap:!1}}),Z=new y({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJ2lucHV0X2lkcyclM0ElMjB0ZW5zb3IoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwJTIwMTAxJTJDJTIwJTIwMTA0NSUyQyUyMCUyMDEwMDUlMkMlMjAlMjAyMzEwJTJDJTIwJTIwMjA0MiUyQyUyMCUyMDM0MDMlMkMlMjAlMjAyMDA1JTJDJTIwJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAyNjA3JTJDJTIwJTIwMjAyNiUyQyUyMCUyMDI4NzglMkMlMjAlMjAyMTY2JTJDJTIwJTIwMTAxMiUyQyUyMCUyMCUyMDEwMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjA1MjIzJTJDJTIwJTIwMjAyMyUyQyUyMCUyMDIwNjElMkMlMjAlMjAyMTcyJTJDJTIwJTIwJTIwOTk5JTJDJTIwJTIwJTIwMTAyJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlNUQlMEElMjAlMjAlMjAlMjAlNUQpJTJDJTIwJTBBJTIwJTIwJTIwJTIwJ2F0dGVudGlvbl9tYXNrJyUzQSUyMHRlbnNvciglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCU1RCUwQSUyMCUyMCUyMCUyMCU1RCklMEElN0Q=",highlighted:`{ | |
| <span class="hljs-string">'input_ids'</span>: 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>], | |
| [ <span class="hljs-number">101</span>, <span class="hljs-number">1045</span>, <span class="hljs-number">5223</span>, <span class="hljs-number">2023</span>, <span class="hljs-number">2061</span>, <span class="hljs-number">2172</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>] | |
| ]), | |
| <span class="hljs-string">'attention_mask'</span>: tensor([ | |
| [<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">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">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">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">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>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>] | |
| ]) | |
| }`,wrap:!1}}),W=new ze({props:{title:"Pasando por el modelo",local:"going-through-the-model",headingTag:"h2"}}),R=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbCUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModel | |
| checkpoint = <span class="hljs-string">"distilbert-base-uncased-finetuned-sst-2-english"</span> | |
| model = AutoModel.from_pretrained(checkpoint)`,wrap:!1}}),O=new ze({props:{title:"¿Un vector de alta dimensión?",local:"a-high-dimensional-vector",headingTag:"h3"}}),ae=new y({props:{code:"b3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKSUwQXByaW50KG91dHB1dHMubGFzdF9oaWRkZW5fc3RhdGUuc2hhcGUp",highlighted:`outputs = model(**inputs) | |
| <span class="hljs-built_in">print</span>(outputs.last_hidden_state.shape)`,wrap:!1}}),ne=new y({props:{code:"dG9yY2guU2l6ZSglNUIyJTJDJTIwMTYlMkMlMjA3NjglNUQp",highlighted:'torch.Size([<span class="hljs-number">2</span>, <span class="hljs-number">16</span>, <span class="hljs-number">768</span>])',wrap:!1}}),ie=new ze({props:{title:"Cabezas de modelo: dar sentido a los números",local:"model-heads-making-sense-out-of-numbers",headingTag:"h3"}}),Me=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBb3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification | |
| checkpoint = <span class="hljs-string">"distilbert-base-uncased-finetuned-sst-2-english"</span> | |
| model = AutoModelForSequenceClassification.from_pretrained(checkpoint) | |
| outputs = model(**inputs)`,wrap:!1}}),fe=new y({props:{code:"cHJpbnQob3V0cHV0cy5sb2dpdHMuc2hhcGUp",highlighted:'<span class="hljs-built_in">print</span>(outputs.logits.shape)',wrap:!1}}),be=new y({props:{code:"dG9yY2guU2l6ZSglNUIyJTJDJTIwMiU1RCk=",highlighted:'torch.Size([<span class="hljs-number">2</span>, <span class="hljs-number">2</span>])',wrap:!1}}),he=new ze({props:{title:"Posprocesamiento de la salida",local:"postprocessing-the-output",headingTag:"h2"}}),Ue=new y({props:{code:"cHJpbnQob3V0cHV0cy5sb2dpdHMp",highlighted:'<span class="hljs-built_in">print</span>(outputs.logits)',wrap:!1}}),Ce=new y({props:{code:"dGVuc29yKCU1QiU1Qi0xLjU2MDclMkMlMjAlMjAxLjYxMjMlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjA0LjE2OTIlMkMlMjAtMy4zNDY0JTVEJTVEJTJDJTIwZ3JhZF9mbiUzRCUzQ0FkZG1tQmFja3dhcmQlM0Up",highlighted:`tensor([[-<span class="hljs-number">1.5607</span>, <span class="hljs-number">1.6123</span>], | |
| [ <span class="hljs-number">4.1692</span>, -<span class="hljs-number">3.3464</span>]], grad_fn=<AddmmBackward>)`,wrap:!1}}),$e=new y({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwcmVkaWN0aW9ucyUyMCUzRCUyMHRvcmNoLm5uLmZ1bmN0aW9uYWwuc29mdG1heChvdXRwdXRzLmxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQXByaW50KHByZWRpY3Rpb25zKQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| predictions = torch.nn.functional.softmax(outputs.logits, dim=-<span class="hljs-number">1</span>) | |
| <span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),we=new y({props:{code:"dGVuc29yKCU1QiU1QjQuMDE5NWUtMDIlMkMlMjA5LjU5ODBlLTAxJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCOS45OTQ2ZS0wMSUyQyUyMDUuNDQxOGUtMDQlNUQlNUQlMkMlMjBncmFkX2ZuJTNEJTNDU29mdG1heEJhY2t3YXJkJTNFKQ==",highlighted:`tensor([[<span class="hljs-number">4.0195e-02</span>, <span class="hljs-number">9.5980e-01</span>], | |
| [<span class="hljs-number">9.9946e-01</span>, <span class="hljs-number">5.4418e-04</span>]], grad_fn=<SoftmaxBackward>)`,wrap:!1}}),xe=new y({props:{code:"bW9kZWwuY29uZmlnLmlkMmxhYmVs",highlighted:"model.config.id2label",wrap:!1}}),ke=new y({props:{code:"JTdCMCUzQSUyMCdORUdBVElWRSclMkMlMjAxJTNBJTIwJ1BPU0lUSVZFJyU3RA==",highlighted:'{<span class="hljs-number">0</span>: <span class="hljs-string">'NEGATIVE'</span>, <span class="hljs-number">1</span>: <span class="hljs-string">'POSITIVE'</span>}',wrap:!1}}),_e=new el({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter2/2.mdx"}}),{c(){f=o("meta"),qe=a(),b=o("p"),Le=a(),r(T.$$.fragment),He=a(),r(C.$$.fragment),Ve=a(),r(J.$$.fragment),De=a(),r($.$$.fragment),Ge=a(),r(w.$$.fragment),Pe=a(),v=o("p"),v.innerHTML=lt,Ze=a(),r(g.$$.fragment),Se=a(),x=o("p"),x.textContent=at,We=a(),r(k.$$.fragment),Be=a(),I=o("p"),I.innerHTML=nt,Re=a(),h=o("div"),h.innerHTML=ot,Fe=a(),A=o("p"),A.textContent=it,Xe=a(),r(E.$$.fragment),Ye=a(),_=o("p"),_.innerHTML=pt,Ke=a(),q=o("ul"),q.innerHTML=rt,Oe=a(),L=o("p"),L.innerHTML=mt,es=a(),z=o("p"),z.innerHTML=dt,ss=a(),r(N.$$.fragment),ts=a(),Q=o("p"),Q.textContent=ut,ls=a(),H=o("p"),H.innerHTML=ct,as=a(),V=o("p"),V.innerHTML=Mt,ns=a(),r(D.$$.fragment),os=a(),G=o("p"),G.textContent=yt,is=a(),P=o("p"),P.textContent=ft,ps=a(),r(Z.$$.fragment),rs=a(),S=o("p"),S.innerHTML=bt,ms=a(),r(W.$$.fragment),ds=a(),B=o("p"),B.innerHTML=Tt,us=a(),r(R.$$.fragment),cs=a(),F=o("p"),F.textContent=ht,Ms=a(),X=o("p"),X.innerHTML=jt,ys=a(),Y=o("p"),Y.textContent=Ut,fs=a(),K=o("p"),K.innerHTML=Ct,bs=a(),r(O.$$.fragment),Ts=a(),ee=o("p"),ee.textContent=Jt,hs=a(),se=o("ul"),se.innerHTML=$t,js=a(),te=o("p"),te.textContent=wt,Us=a(),le=o("p"),le.textContent=vt,Cs=a(),r(ae.$$.fragment),Js=a(),r(ne.$$.fragment),$s=a(),oe=o("p"),oe.innerHTML=gt,ws=a(),r(ie.$$.fragment),vs=a(),pe=o("p"),pe.textContent=xt,gs=a(),j=o("div"),j.innerHTML=kt,xs=a(),re=o("p"),re.textContent=It,ks=a(),me=o("p"),me.textContent=At,Is=a(),de=o("p"),de.textContent=Et,As=a(),ue=o("ul"),ue.innerHTML=_t,Es=a(),ce=o("p"),ce.innerHTML=qt,_s=a(),r(Me.$$.fragment),qs=a(),ye=o("p"),ye.textContent=Lt,Ls=a(),r(fe.$$.fragment),zs=a(),r(be.$$.fragment),Ns=a(),Te=o("p"),Te.textContent=zt,Qs=a(),r(he.$$.fragment),Hs=a(),je=o("p"),je.textContent=Nt,Vs=a(),r(Ue.$$.fragment),Ds=a(),r(Ce.$$.fragment),Gs=a(),Je=o("p"),Je.innerHTML=Qt,Ps=a(),r($e.$$.fragment),Zs=a(),r(we.$$.fragment),Ss=a(),ve=o("p"),ve.innerHTML=Ht,Ws=a(),ge=o("p"),ge.innerHTML=Vt,Bs=a(),r(xe.$$.fragment),Rs=a(),r(ke.$$.fragment),Fs=a(),Ie=o("p"),Ie.textContent=Dt,Xs=a(),Ae=o("ul"),Ae.innerHTML=Gt,Ys=a(),Ee=o("p"),Ee.textContent=Pt,Ks=a(),U=o("blockquote"),U.innerHTML=Zt,Os=a(),r(_e.$$.fragment),et=a(),Ne=o("p"),this.h()},l(e){const s=Yt("svelte-u9bgzb",document.head);f=i(s,"META",{name:!0,content:!0}),s.forEach(t),qe=n(e),b=i(e,"P",{}),Wt(b).forEach(t),Le=n(e),m(T.$$.fragment,e),He=n(e),m(C.$$.fragment,e),Ve=n(e),m(J.$$.fragment,e),De=n(e),m($.$$.fragment,e),Ge=n(e),m(w.$$.fragment,e),Pe=n(e),v=i(e,"P",{"data-svelte-h":!0}),p(v)!=="svelte-yn0zi2"&&(v.innerHTML=lt),Ze=n(e),m(g.$$.fragment,e),Se=n(e),x=i(e,"P",{"data-svelte-h":!0}),p(x)!=="svelte-15u4w0d"&&(x.textContent=at),We=n(e),m(k.$$.fragment,e),Be=n(e),I=i(e,"P",{"data-svelte-h":!0}),p(I)!=="svelte-1a707vq"&&(I.innerHTML=nt),Re=n(e),h=i(e,"DIV",{class:!0,"data-svelte-h":!0}),p(h)!=="svelte-ygh2nx"&&(h.innerHTML=ot),Fe=n(e),A=i(e,"P",{"data-svelte-h":!0}),p(A)!=="svelte-1md5n5c"&&(A.textContent=it),Xe=n(e),m(E.$$.fragment,e),Ye=n(e),_=i(e,"P",{"data-svelte-h":!0}),p(_)!=="svelte-1ek16g"&&(_.innerHTML=pt),Ke=n(e),q=i(e,"UL",{"data-svelte-h":!0}),p(q)!=="svelte-iay1pd"&&(q.innerHTML=rt),Oe=n(e),L=i(e,"P",{"data-svelte-h":!0}),p(L)!=="svelte-1yhq2tg"&&(L.innerHTML=mt),es=n(e),z=i(e,"P",{"data-svelte-h":!0}),p(z)!=="svelte-1t4p3nt"&&(z.innerHTML=dt),ss=n(e),m(N.$$.fragment,e),ts=n(e),Q=i(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-1upxp7y"&&(Q.textContent=ut),ls=n(e),H=i(e,"P",{"data-svelte-h":!0}),p(H)!=="svelte-1jeof1v"&&(H.innerHTML=ct),as=n(e),V=i(e,"P",{"data-svelte-h":!0}),p(V)!=="svelte-y2pflo"&&(V.innerHTML=Mt),ns=n(e),m(D.$$.fragment,e),os=n(e),G=i(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-1h4gxct"&&(G.textContent=yt),is=n(e),P=i(e,"P",{"data-svelte-h":!0}),p(P)!=="svelte-sm3u1p"&&(P.textContent=ft),ps=n(e),m(Z.$$.fragment,e),rs=n(e),S=i(e,"P",{"data-svelte-h":!0}),p(S)!=="svelte-1wdtnpf"&&(S.innerHTML=bt),ms=n(e),m(W.$$.fragment,e),ds=n(e),B=i(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-1yz6ldo"&&(B.innerHTML=Tt),us=n(e),m(R.$$.fragment,e),cs=n(e),F=i(e,"P",{"data-svelte-h":!0}),p(F)!=="svelte-9xvn6l"&&(F.textContent=ht),Ms=n(e),X=i(e,"P",{"data-svelte-h":!0}),p(X)!=="svelte-128q2pb"&&(X.innerHTML=jt),ys=n(e),Y=i(e,"P",{"data-svelte-h":!0}),p(Y)!=="svelte-xsj50c"&&(Y.textContent=Ut),fs=n(e),K=i(e,"P",{"data-svelte-h":!0}),p(K)!=="svelte-dcnyvd"&&(K.innerHTML=Ct),bs=n(e),m(O.$$.fragment,e),Ts=n(e),ee=i(e,"P",{"data-svelte-h":!0}),p(ee)!=="svelte-100v50j"&&(ee.textContent=Jt),hs=n(e),se=i(e,"UL",{"data-svelte-h":!0}),p(se)!=="svelte-5hoiht"&&(se.innerHTML=$t),js=n(e),te=i(e,"P",{"data-svelte-h":!0}),p(te)!=="svelte-136klpu"&&(te.textContent=wt),Us=n(e),le=i(e,"P",{"data-svelte-h":!0}),p(le)!=="svelte-p48cau"&&(le.textContent=vt),Cs=n(e),m(ae.$$.fragment,e),Js=n(e),m(ne.$$.fragment,e),$s=n(e),oe=i(e,"P",{"data-svelte-h":!0}),p(oe)!=="svelte-m92g8y"&&(oe.innerHTML=gt),ws=n(e),m(ie.$$.fragment,e),vs=n(e),pe=i(e,"P",{"data-svelte-h":!0}),p(pe)!=="svelte-17ifybt"&&(pe.textContent=xt),gs=n(e),j=i(e,"DIV",{class:!0,"data-svelte-h":!0}),p(j)!=="svelte-1bz7oez"&&(j.innerHTML=kt),xs=n(e),re=i(e,"P",{"data-svelte-h":!0}),p(re)!=="svelte-ai2x0q"&&(re.textContent=It),ks=n(e),me=i(e,"P",{"data-svelte-h":!0}),p(me)!=="svelte-1iajx5m"&&(me.textContent=At),Is=n(e),de=i(e,"P",{"data-svelte-h":!0}),p(de)!=="svelte-1rb2lxb"&&(de.textContent=Et),As=n(e),ue=i(e,"UL",{"data-svelte-h":!0}),p(ue)!=="svelte-17lku09"&&(ue.innerHTML=_t),Es=n(e),ce=i(e,"P",{"data-svelte-h":!0}),p(ce)!=="svelte-1mgz7wk"&&(ce.innerHTML=qt),_s=n(e),m(Me.$$.fragment,e),qs=n(e),ye=i(e,"P",{"data-svelte-h":!0}),p(ye)!=="svelte-1n8xkdg"&&(ye.textContent=Lt),Ls=n(e),m(fe.$$.fragment,e),zs=n(e),m(be.$$.fragment,e),Ns=n(e),Te=i(e,"P",{"data-svelte-h":!0}),p(Te)!=="svelte-16l4kug"&&(Te.textContent=zt),Qs=n(e),m(he.$$.fragment,e),Hs=n(e),je=i(e,"P",{"data-svelte-h":!0}),p(je)!=="svelte-k6xq7g"&&(je.textContent=Nt),Vs=n(e),m(Ue.$$.fragment,e),Ds=n(e),m(Ce.$$.fragment,e),Gs=n(e),Je=i(e,"P",{"data-svelte-h":!0}),p(Je)!=="svelte-s7fv62"&&(Je.innerHTML=Qt),Ps=n(e),m($e.$$.fragment,e),Zs=n(e),m(we.$$.fragment,e),Ss=n(e),ve=i(e,"P",{"data-svelte-h":!0}),p(ve)!=="svelte-1of627v"&&(ve.innerHTML=Ht),Ws=n(e),ge=i(e,"P",{"data-svelte-h":!0}),p(ge)!=="svelte-3g6dus"&&(ge.innerHTML=Vt),Bs=n(e),m(xe.$$.fragment,e),Rs=n(e),m(ke.$$.fragment,e),Fs=n(e),Ie=i(e,"P",{"data-svelte-h":!0}),p(Ie)!=="svelte-j6l6e8"&&(Ie.textContent=Dt),Xs=n(e),Ae=i(e,"UL",{"data-svelte-h":!0}),p(Ae)!=="svelte-uvg4y9"&&(Ae.innerHTML=Gt),Ys=n(e),Ee=i(e,"P",{"data-svelte-h":!0}),p(Ee)!=="svelte-1beedbi"&&(Ee.textContent=Pt),Ks=n(e),U=i(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),p(U)!=="svelte-15bkwew"&&(U.innerHTML=Zt),Os=n(e),m(_e.$$.fragment,e),et=n(e),Ne=i(e,"P",{}),Wt(Ne).forEach(t),this.h()},h(){Qe(f,"name","hf:doc:metadata"),Qe(f,"content",nl),Qe(h,"class","flex justify-center"),Qe(j,"class","flex justify-center"),Qe(U,"class","tip")},m(e,s){Kt(document.head,f),l(e,qe,s),l(e,b,s),l(e,Le,s),d(T,e,s),l(e,He,s),d(C,e,s),l(e,Ve,s),d(J,e,s),l(e,De,s),d($,e,s),l(e,Ge,s),d(w,e,s),l(e,Pe,s),l(e,v,s),l(e,Ze,s),d(g,e,s),l(e,Se,s),l(e,x,s),l(e,We,s),d(k,e,s),l(e,Be,s),l(e,I,s),l(e,Re,s),l(e,h,s),l(e,Fe,s),l(e,A,s),l(e,Xe,s),d(E,e,s),l(e,Ye,s),l(e,_,s),l(e,Ke,s),l(e,q,s),l(e,Oe,s),l(e,L,s),l(e,es,s),l(e,z,s),l(e,ss,s),d(N,e,s),l(e,ts,s),l(e,Q,s),l(e,ls,s),l(e,H,s),l(e,as,s),l(e,V,s),l(e,ns,s),d(D,e,s),l(e,os,s),l(e,G,s),l(e,is,s),l(e,P,s),l(e,ps,s),d(Z,e,s),l(e,rs,s),l(e,S,s),l(e,ms,s),d(W,e,s),l(e,ds,s),l(e,B,s),l(e,us,s),d(R,e,s),l(e,cs,s),l(e,F,s),l(e,Ms,s),l(e,X,s),l(e,ys,s),l(e,Y,s),l(e,fs,s),l(e,K,s),l(e,bs,s),d(O,e,s),l(e,Ts,s),l(e,ee,s),l(e,hs,s),l(e,se,s),l(e,js,s),l(e,te,s),l(e,Us,s),l(e,le,s),l(e,Cs,s),d(ae,e,s),l(e,Js,s),d(ne,e,s),l(e,$s,s),l(e,oe,s),l(e,ws,s),d(ie,e,s),l(e,vs,s),l(e,pe,s),l(e,gs,s),l(e,j,s),l(e,xs,s),l(e,re,s),l(e,ks,s),l(e,me,s),l(e,Is,s),l(e,de,s),l(e,As,s),l(e,ue,s),l(e,Es,s),l(e,ce,s),l(e,_s,s),d(Me,e,s),l(e,qs,s),l(e,ye,s),l(e,Ls,s),d(fe,e,s),l(e,zs,s),d(be,e,s),l(e,Ns,s),l(e,Te,s),l(e,Qs,s),d(he,e,s),l(e,Hs,s),l(e,je,s),l(e,Vs,s),d(Ue,e,s),l(e,Ds,s),d(Ce,e,s),l(e,Gs,s),l(e,Je,s),l(e,Ps,s),d($e,e,s),l(e,Zs,s),d(we,e,s),l(e,Ss,s),l(e,ve,s),l(e,Ws,s),l(e,ge,s),l(e,Bs,s),d(xe,e,s),l(e,Rs,s),d(ke,e,s),l(e,Fs,s),l(e,Ie,s),l(e,Xs,s),l(e,Ae,s),l(e,Ys,s),l(e,Ee,s),l(e,Ks,s),l(e,U,s),l(e,Os,s),d(_e,e,s),l(e,et,s),l(e,Ne,s),st=!0},p(e,[s]){const St={};s&1&&(St.fw=e[0]),T.$set(St)},i(e){st||(u(T.$$.fragment,e),u(C.$$.fragment,e),u(J.$$.fragment,e),u($.$$.fragment,e),u(w.$$.fragment,e),u(g.$$.fragment,e),u(k.$$.fragment,e),u(E.$$.fragment,e),u(N.$$.fragment,e),u(D.$$.fragment,e),u(Z.$$.fragment,e),u(W.$$.fragment,e),u(R.$$.fragment,e),u(O.$$.fragment,e),u(ae.$$.fragment,e),u(ne.$$.fragment,e),u(ie.$$.fragment,e),u(Me.$$.fragment,e),u(fe.$$.fragment,e),u(be.$$.fragment,e),u(he.$$.fragment,e),u(Ue.$$.fragment,e),u(Ce.$$.fragment,e),u($e.$$.fragment,e),u(we.$$.fragment,e),u(xe.$$.fragment,e),u(ke.$$.fragment,e),u(_e.$$.fragment,e),st=!0)},o(e){c(T.$$.fragment,e),c(C.$$.fragment,e),c(J.$$.fragment,e),c($.$$.fragment,e),c(w.$$.fragment,e),c(g.$$.fragment,e),c(k.$$.fragment,e),c(E.$$.fragment,e),c(N.$$.fragment,e),c(D.$$.fragment,e),c(Z.$$.fragment,e),c(W.$$.fragment,e),c(R.$$.fragment,e),c(O.$$.fragment,e),c(ae.$$.fragment,e),c(ne.$$.fragment,e),c(ie.$$.fragment,e),c(Me.$$.fragment,e),c(fe.$$.fragment,e),c(be.$$.fragment,e),c(he.$$.fragment,e),c(Ue.$$.fragment,e),c(Ce.$$.fragment,e),c($e.$$.fragment,e),c(we.$$.fragment,e),c(xe.$$.fragment,e),c(ke.$$.fragment,e),c(_e.$$.fragment,e),st=!1},d(e){e&&(t(qe),t(b),t(Le),t(He),t(Ve),t(De),t(Ge),t(Pe),t(v),t(Ze),t(Se),t(x),t(We),t(Be),t(I),t(Re),t(h),t(Fe),t(A),t(Xe),t(Ye),t(_),t(Ke),t(q),t(Oe),t(L),t(es),t(z),t(ss),t(ts),t(Q),t(ls),t(H),t(as),t(V),t(ns),t(os),t(G),t(is),t(P),t(ps),t(rs),t(S),t(ms),t(ds),t(B),t(us),t(cs),t(F),t(Ms),t(X),t(ys),t(Y),t(fs),t(K),t(bs),t(Ts),t(ee),t(hs),t(se),t(js),t(te),t(Us),t(le),t(Cs),t(Js),t($s),t(oe),t(ws),t(vs),t(pe),t(gs),t(j),t(xs),t(re),t(ks),t(me),t(Is),t(de),t(As),t(ue),t(Es),t(ce),t(_s),t(qs),t(ye),t(Ls),t(zs),t(Ns),t(Te),t(Qs),t(Hs),t(je),t(Vs),t(Ds),t(Gs),t(Je),t(Ps),t(Zs),t(Ss),t(ve),t(Ws),t(ge),t(Bs),t(Rs),t(Fs),t(Ie),t(Xs),t(Ae),t(Ys),t(Ee),t(Ks),t(U),t(Os),t(et),t(Ne)),t(f),M(T,e),M(C,e),M(J,e),M($,e),M(w,e),M(g,e),M(k,e),M(E,e),M(N,e),M(D,e),M(Z,e),M(W,e),M(R,e),M(O,e),M(ae,e),M(ne,e),M(ie,e),M(Me,e),M(fe,e),M(be,e),M(he,e),M(Ue,e),M(Ce,e),M($e,e),M(we,e),M(xe,e),M(ke,e),M(_e,e)}}}const nl='{"title":"Detrás del pipeline","local":"behind-the-pipeline","sections":[{"title":"Preprocesamiento con un tokenizador","local":"preprocessing-with-a-tokenizer","sections":[],"depth":2},{"title":"Pasando por el modelo","local":"going-through-the-model","sections":[{"title":"¿Un vector de alta dimensión?","local":"a-high-dimensional-vector","sections":[],"depth":3},{"title":"Cabezas de modelo: dar sentido a los números","local":"model-heads-making-sense-out-of-numbers","sections":[],"depth":3}],"depth":2},{"title":"Posprocesamiento de la salida","local":"postprocessing-the-output","sections":[],"depth":2}],"depth":1}';function ol(tt,f,qe){let b="pt";return Rt(()=>{const Le=new URLSearchParams(window.location.search);qe(0,b=Le.get("fw")||"pt")}),[b]}class Ml extends Ft{constructor(f){super(),Xt(this,f,ol,al,Bt,{})}}export{Ml as component}; | |
Xet Storage Details
- Size:
- 34.9 kB
- Xet hash:
- 76da3446c4980c60e22f3343840203d1b2f898099b262bc4eec04a02b17c5b54
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.