import{s as Ie,o as Je}from"../chunks/scheduler.37c15a92.js";import{S as Ze,i as Ae,g as qe,s as d,r as c,A as Ce,h as ke,f as n,c as u,j as ye,u as p,k as Te,y as Ee,a as l,v as f,t as i,b as je,d as m,w as $,p as Ue}from"../chunks/index.2bf4358c.js";import{C as he}from"../chunks/CodeBlock.4e987730.js";import{C as Qe}from"../chunks/CourseFloatingBanner.6add7356.js";import{Q as h}from"../chunks/Question.668688bc.js";import{F as We}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as k,E as Ve}from"../chunks/getInferenceSnippets.8b9eb92a.js";function Oe(v){let r,g,s,b;return r=new k({props:{title:"5. O que seria um TFAutoModel ?",local:"5-o-que-seria-um-tfautomodel-",headingTag:"h3"}}),s=new h({props:{choices:[{text:"Um modelo que treina automaticamente com seus dados",explain:"Incorreto. Você está confundindo isto com nosso produto de <a href='https://huggingface.co/autonlp'>AutoNLP</a>?"},{text:"Um objeto que devolve a arquitetura correta com base em um checkpoint",explain:"Exatamente: o <code>TFAutoModel</code> só precisa saber o checkpoint para saber como inicializar então devolver a arquitetura correta.",correct:!0},{text:"Um modelo que detecta automaticamente a linguagem utilizada para suas entradas a fim de carregar os pesos corretos",explain:"Incorreto; embora alguns checkpoints e modelos sejam capazes de lidar com vários idiomas, não há ferramentas embutidas para seleção automática de checkpoints de acordo com o idioma. Você deve ir para o  <a href='https://huggingface.co/models'>Model Hub</a> para encontrar o melhor checkpoint para realizar sua tarefa!"}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment)},l(a){p(r.$$.fragment,a),g=u(a),p(s.$$.fragment,a)},m(a,x){f(r,a,x),l(a,g,x),f(s,a,x),b=!0},i(a){b||(m(r.$$.fragment,a),m(s.$$.fragment,a),b=!0)},o(a){i(r.$$.fragment,a),i(s.$$.fragment,a),b=!1},d(a){a&&n(g),$(r,a),$(s,a)}}}function Fe(v){let r,g,s,b;return r=new k({props:{title:"5. O que seria um AutoModel ?",local:"5-o-que-seria-um-automodel-",headingTag:"h3"}}),s=new h({props:{choices:[{text:"Um modelo que treina automaticamente com seus dados",explain:"Incorreto. Você está confundindo isto com nosso produto de <a href='https://huggingface.co/autonlp'>AutoNLP</a>?"},{text:"Um objeto que devolve a arquitetura correta com base em um checkpoint",explain:"Exatamente: o <code>AutoModel</code> só precisa saber o checkpoint para saber como inicializar então devolver a arquitetura correta.",correct:!0},{text:"Um modelo que detecta automaticamente a linguagem utilizada para suas entradas a fim de carregar os pesos corretos",explain:"Incorreto; embora alguns checkpoints e modelos sejam capazes de lidar com vários idiomas, não há ferramentas embutidas para seleção automática de checkpoints de acordo com o idioma. Você deve ir para o  <a href='https://huggingface.co/models'>Model Hub</a> para encontrar o melhor checkpoint para realizar sua tarefa!"}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment)},l(a){p(r.$$.fragment,a),g=u(a),p(s.$$.fragment,a)},m(a,x){f(r,a,x),l(a,g,x),f(s,a,x),b=!0},i(a){b||(m(r.$$.fragment,a),m(s.$$.fragment,a),b=!0)},o(a){i(r.$$.fragment,a),i(s.$$.fragment,a),b=!1},d(a){a&&n(g),$(r,a),$(s,a)}}}function Be(v){let r,g,s,b,a,x;return r=new k({props:{title:"10. Tem algo errado com o código abaixo?",local:"10-tem-algo-errado-com-o-código-abaixo",headingTag:"h3"}}),s=new he({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbCUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiklMEFtb2RlbCUyMCUzRCUyMFRGQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZCglMjJncHQyJTIyKSUwQSUwQWVuY29kZWQlMjAlM0QlMjB0b2tlbml6ZXIoJTIySGV5ISUyMiUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBcmVzdWx0JTIwJTNEJTIwbW9kZWwoKiplbmNvZGVkKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModel

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
model = TFAutoModel.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)

encoded = tokenizer(<span class="hljs-string">&quot;Hey!&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
result = model(**encoded)`,wrap:!1}}),a=new h({props:{choices:[{text:"Não, parece correto.",explain:"Infelizmente, acoplar um modelo com um tokenizer que foi treinado com um checkpoint diferente raramente é uma boa ideia. O modelo não foi treinado para fazer sentido a partir da saída deste tokenizer, então a saída do modelo (isto se ele realmente funcionar!) não fará nenhum sentido."},{text:"O tokenizer e o modelo devem ser sempre a partir do mesmo checkpoint.",explain:"Correto!",correct:!0},{text:"É uma boa prática realizar o padding e truncar com o tokenizer, pois cada entrada é um batch.",explain:"É verdade que cada entrada do modelo precisa ser um batch. Entretanto, truncando ou realizando o padding desta sequência não faria necessariamente sentido, pois existe apenas uma delas, e estas são técnicas para criar batches de uma lista de sentenças."}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment),b=d(),c(a.$$.fragment)},l(t){p(r.$$.fragment,t),g=u(t),p(s.$$.fragment,t),b=u(t),p(a.$$.fragment,t)},m(t,q){f(r,t,q),l(t,g,q),f(s,t,q),l(t,b,q),f(a,t,q),x=!0},i(t){x||(m(r.$$.fragment,t),m(s.$$.fragment,t),m(a.$$.fragment,t),x=!0)},o(t){i(r.$$.fragment,t),i(s.$$.fragment,t),i(a.$$.fragment,t),x=!1},d(t){t&&(n(g),n(b)),$(r,t),$(s,t),$(a,t)}}}function Xe(v){let r,g,s,b,a,x;return r=new k({props:{title:"10. Tem algo errado com o código abaixo?",local:"10-tem-algo-errado-com-o-código-abaixo",headingTag:"h3"}}),s=new he({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWwlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmdwdDIlMjIpJTBBJTBBZW5jb2RlZCUyMCUzRCUyMHRva2VuaXplciglMjJIZXkhJTIyJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFyZXN1bHQlMjAlM0QlMjBtb2RlbCgqKmVuY29kZWQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
model = AutoModel.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)

encoded = tokenizer(<span class="hljs-string">&quot;Hey!&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
result = model(**encoded)`,wrap:!1}}),a=new h({props:{choices:[{text:"Não, parece correto.",explain:"Infelizmente, acoplar um modelo com um tokenizer que foi treinado com um checkpoint diferente raramente é uma boa ideia. O modelo não foi treinado para fazer sentido a partir da saída deste tokenizer, então a saída do modelo (isto se ele realmente funcionar!) não fará nenhum sentido."},{text:"O tokenizer e o modelo devem ser sempre a partir do mesmo checkpoint.",explain:"Correto!",correct:!0},{text:"É uma boa prática realizar o padding e truncar com o tokenizer, pois cada entrada é um batch.",explain:"É verdade que cada entrada do modelo precisa ser um batch. Entretanto, truncando ou realizando o padding desta sequência não faria necessariamente sentido, pois existe apenas uma delas, e estas são técnicas para criar batches de uma lista de sentenças."}]}}),{c(){c(r.$$.fragment),g=d(),c(s.$$.fragment),b=d(),c(a.$$.fragment)},l(t){p(r.$$.fragment,t),g=u(t),p(s.$$.fragment,t),b=u(t),p(a.$$.fragment,t)},m(t,q){f(r,t,q),l(t,g,q),f(s,t,q),l(t,b,q),f(a,t,q),x=!0},i(t){x||(m(r.$$.fragment,t),m(s.$$.fragment,t),m(a.$$.fragment,t),x=!0)},o(t){i(r.$$.fragment,t),i(s.$$.fragment,t),i(a.$$.fragment,t),x=!1},d(t){t&&(n(g),n(b)),$(r,t),$(s,t),$(a,t)}}}function He(v){let r,g,s,b,a,x,t,q,y,L,T,Y,j,K,U,ee,I,ae,J,te,Z,oe,A,re,C,se,z,M,G,E,ne,Q,ie,W,me,V,le,O,de,F,ue,B,ce,X,pe,H,fe,_,w,P,R,$e,D,ge;a=new We({props:{fw:v[0]}}),t=new k({props:{title:"Questionário de fim de capítulo",local:"questionário-de-fim-de-capítulo",headingTag:"h1"}}),y=new Qe({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),T=new k({props:{title:"1. Qual é a ordem do pipeline para a modelagem de linguagem?",local:"1-qual-é-a-ordem-do-pipeline-para-a-modelagem-de-linguagem",headingTag:"h3"}}),j=new h({props:{choices:[{text:"Primeiro, o modelo trata de textos e devolve previsões em bruto. O tokenizer, então, trás sentido a estas previsões e as converte de volta ao texto quando necessário.",explain:"O modelo não consegue entender o texto! O tokenizer deve primeiro simbolizar o texto e convertê-lo em IDs para que seja compreensível pelo modelo."},{text:"Primeiro, o tokenizer trata de textos e devolve as identificações (IDs). O modelo lida com estas identificações e produz uma predição, que pode ser algum texto.",explain:"A predição do modelo não pode ser feita de imediato. O tokenizer tem que ser usado para converter a predição de volta ao texto!"},{text:"O tokenizer trata de textos e devolve os IDs. O modelo lida com estes IDs e produz uma predição. O tokenizer pode então ser usado mais uma vez para converter estas previsões de volta para algum texto.",explain:"Correto! O tokenizer pode ser usado tanto para a tokenização quanto para a destokenização.",correct:!0}]}}),U=new k({props:{title:"2. Quantas dimensões tem o tensor do Transformer de base, e quais são elas?",local:"2-quantas-dimensões-tem-o-tensor-do-transformer-de-base-e-quais-são-elas",headingTag:"h3"}}),I=new h({props:{choices:[{text:"2: O comprimento da sequência e o tamanho do batch (lote)",explain:"Falso! A saída do tensor pelo modelo tem uma terceira dimensão: o tamanho das camadas ocultas"},{text:"2: O comprimento da sequência e o tamanho das camadas ocultas",explain:"Falso! Todos os Transformer lidam com batches, mesmo com uma única sequência; isso seria um tamanho de batch de 1!"},{text:"3: O comprimento da sequência, o tamanho do batch (lote) e o tamanho das camadas ocultas",explain:"Correto!",correct:!0}]}}),J=new k({props:{title:"3. Qual dos seguintes é um exemplo de Tokenização por sub-palavras?",local:"3-qual-dos-seguintes-é-um-exemplo-de-tokenização-por-sub-palavras",headingTag:"h3"}}),Z=new h({props:{choices:[{text:"WordPiece",explain:"Exatamente, este é um exemplo de Tokenização por sub-palavra!",correct:!0},{text:"Character-based tokenization",explain:"Character-based tokenization não é uma tokenização por sub-palavra!."},{text:"Divisão no espaço em branco e pontuação",explain:"Esse é um esquema de tokenization baseado em palavras!"},{text:"BPE",explain:"Exatamente, este é um exemplo de Tokenização por sub-palavra!",correct:!0},{text:"Unigram",explain:"Exatamente, este é um exemplo de Tokenização por sub-palavra!",correct:!0},{text:"Nenhuma das acimas",explain:"Errado!"}]}}),A=new k({props:{title:"4. O que é uma model head ?",local:"4-o-que-é-uma-model-head-",headingTag:"h3"}}),C=new h({props:{choices:[{text:"Um componente dos transformers de base que redireciona os tensores para suas camadas corretas",explain:"Incorreto! Não existe tal componente."},{text:"Também conhecido como mecanismo de auto-atenção (*self-attention*), ele adapta a representação de um símbolo de acordo com os outros tokens da sequência",explain:"Incorreto! A camada de auto-atenção contém 'attention heads', mas estas não são as heads de adaptação."},{text:"Um componente adicional, geralmente composto de uma ou poucas camadas, para converter as previsões do Transformer em uma saída específica de tarefa",explain:"É isso mesmo. As heads de adaptação, também conhecidos simplesmente como heads, surgem em diferentes formas: heads de modelagem de linguagem, heads de resposta a perguntas, heads de classificação de sequência.. ",correct:!0}]}});const ve=[Fe,Oe],S=[];function ze(e,o){return e[0]==="pt"?0:1}z=ze(v),M=S[z]=ve[z](v),E=new k({props:{title:"6. Quais são as técnicas a serem observadas quando realizar batches com sequências de diferentes tamanhos?",local:"6-quais-são-as-técnicas-a-serem-observadas-quando-realizar-batches-com-sequências-de-diferentes-tamanhos",headingTag:"h3"}}),Q=new h({props:{choices:[{text:"Truncar",explain:"Sim, a truncagem é uma forma correta de sequências de saída noturna para que elas se encaixem em forma retangular.No entanto, seria a única?",correct:!0},{text:"Retornar tensores",explain:"Enquanto as outras técnicas permitem retornar tensores retangulares, retornar tensores não é útil quando realizar batches de sequências juntas."},{text:"Padding",explain:"Sim, padding é uma forma correta para as sequências de saída para que elas se encaixem em uma forma retangular. No entanto, seria a única?",correct:!0},{text:"Attention masking",explain:"Exatamente! As attention masks são de primordial importância quando se trata de sequências de diferentes tamanhos. No entanto, essa não é a única técnica a ser conhecida.",correct:!0}]}}),W=new k({props:{title:"7. Qual é o objetivo de aplicar uma função SoftMax à saída de logits para um modelo de classificação sequencial??",local:"7-qual-é-o-objetivo-de-aplicar-uma-função-softmax-à-saída-de-logits-para-um-modelo-de-classificação-sequencial",headingTag:"h3"}}),V=new h({props:{choices:[{text:"Suaviza os logits para que sejam mais confiáveis.",explain:"Não, a função SoftMax não afeta a confiabilidade dos resultados."},{text:"Aplica um limite inferior e um limite superior para que eles sejam compreensíveis.",explain:"Correto! Os valores resultantes estão vinculados entre 0 e 1. Mas essa não é a única razão pela qual usamos uma função SoftMax.",correct:!0},{text:"A soma total da saída é 1, resultando em uma possível interpretação probabilística.",explain:"Correto! Mas essa não é a única razão pela qual usamos uma função SoftMax.",correct:!0}]}}),O=new k({props:{title:"8. Qual é o método core da API tokenizer?",local:"8-qual-é-o-método-core-da-api-tokenizer",headingTag:"h3"}}),F=new h({props:{choices:[{text:"<code>encode</code>, pois pode codificar texto em IDs e IDs em predições",explain:"Errado! O método <code>encode</code> existe na tokenização, porém não existe nos modelos."},{text:"Chamando diretamente o objeto de tokenização (tokenizer).",explain:"Exatamente! O método <code>__call__</code> do tokenizer é um método muito poderoso que pode lidar com praticamente qualquer coisa. É também o método usado para recuperar as predições de um modelo.",correct:!0},{text:"<code>padding</code>",explain:"Errado! O padding é muito útil, mas é apenas uma parte da API do tokenizer."},{text:"<code>tokenize</code>",explain:"O método <code>tokenize</code> é indiscutivelmente um dos métodos mais úteis, mas não é o núcleo do API do tokenizer."}]}}),B=new k({props:{title:"9. O que a variável result contém nesta pedaço de código?",local:"9-o-que-a-variável-result-contém-nesta-pedaço-de-código",headingTag:"h3"}}),X=new he({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBcmVzdWx0JTIwJTNEJTIwdG9rZW5pemVyLnRva2VuaXplKCUyMkhlbGxvISUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
result = tokenizer.tokenize(<span class="hljs-string">&quot;Hello!&quot;</span>)`,wrap:!1}}),H=new h({props:{choices:[{text:"Uma lista de strings, sendo cada uma delas um token",explain:"Exatamente! Converta isto em IDs, e envie-os para um modelo!",correct:!0},{text:"Uma lista de IDs",explain:"Incorreto; isto é o para o os métodos <code>__call__</code> ou <code>convert_tokens_to_ids</code>!"},{text:"Uma string contendo todos os tokens ",explain:"Isto seria subótimo, pois o objetivo é dividir a string em vários tokens."}]}});const Me=[Xe,Be],N=[];function _e(e,o){return e[0]==="pt"?0:1}return _=_e(v),w=N[_]=Me[_](v),R=new Ve({props:{source:"https://github.com/huggingface/course/blob/main/chapters/pt/chapter2/8.mdx"}}),{c(){r=qe("meta"),g=d(),s=qe("p"),b=d(),c(a.$$.fragment),x=d(),c(t.$$.fragment),q=d(),c(y.$$.fragment),L=d(),c(T.$$.fragment),Y=d(),c(j.$$.fragment),K=d(),c(U.$$.fragment),ee=d(),c(I.$$.fragment),ae=d(),c(J.$$.fragment),te=d(),c(Z.$$.fragment),oe=d(),c(A.$$.fragment),re=d(),c(C.$$.fragment),se=d(),M.c(),G=d(),c(E.$$.fragment),ne=d(),c(Q.$$.fragment),ie=d(),c(W.$$.fragment),me=d(),c(V.$$.fragment),le=d(),c(O.$$.fragment),de=d(),c(F.$$.fragment),ue=d(),c(B.$$.fragment),ce=d(),c(X.$$.fragment),pe=d(),c(H.$$.fragment),fe=d(),w.c(),P=d(),c(R.$$.fragment),$e=d(),D=qe("p"),this.h()},l(e){const o=Ce("svelte-u9bgzb",document.head);r=ke(o,"META",{name:!0,content:!0}),o.forEach(n),g=u(e),s=ke(e,"P",{}),ye(s).forEach(n),b=u(e),p(a.$$.fragment,e),x=u(e),p(t.$$.fragment,e),q=u(e),p(y.$$.fragment,e),L=u(e),p(T.$$.fragment,e),Y=u(e),p(j.$$.fragment,e),K=u(e),p(U.$$.fragment,e),ee=u(e),p(I.$$.fragment,e),ae=u(e),p(J.$$.fragment,e),te=u(e),p(Z.$$.fragment,e),oe=u(e),p(A.$$.fragment,e),re=u(e),p(C.$$.fragment,e),se=u(e),M.l(e),G=u(e),p(E.$$.fragment,e),ne=u(e),p(Q.$$.fragment,e),ie=u(e),p(W.$$.fragment,e),me=u(e),p(V.$$.fragment,e),le=u(e),p(O.$$.fragment,e),de=u(e),p(F.$$.fragment,e),ue=u(e),p(B.$$.fragment,e),ce=u(e),p(X.$$.fragment,e),pe=u(e),p(H.$$.fragment,e),fe=u(e),w.l(e),P=u(e),p(R.$$.fragment,e),$e=u(e),D=ke(e,"P",{}),ye(D).forEach(n),this.h()},h(){Te(r,"name","hf:doc:metadata"),Te(r,"content",Re)},m(e,o){Ee(document.head,r),l(e,g,o),l(e,s,o),l(e,b,o),f(a,e,o),l(e,x,o),f(t,e,o),l(e,q,o),f(y,e,o),l(e,L,o),f(T,e,o),l(e,Y,o),f(j,e,o),l(e,K,o),f(U,e,o),l(e,ee,o),f(I,e,o),l(e,ae,o),f(J,e,o),l(e,te,o),f(Z,e,o),l(e,oe,o),f(A,e,o),l(e,re,o),f(C,e,o),l(e,se,o),S[z].m(e,o),l(e,G,o),f(E,e,o),l(e,ne,o),f(Q,e,o),l(e,ie,o),f(W,e,o),l(e,me,o),f(V,e,o),l(e,le,o),f(O,e,o),l(e,de,o),f(F,e,o),l(e,ue,o),f(B,e,o),l(e,ce,o),f(X,e,o),l(e,pe,o),f(H,e,o),l(e,fe,o),N[_].m(e,o),l(e,P,o),f(R,e,o),l(e,$e,o),l(e,D,o),ge=!0},p(e,[o]){const we={};o&1&&(we.fw=e[0]),a.$set(we);let be=z;z=ze(e),z!==be&&(Ue(),i(S[be],1,1,()=>{S[be]=null}),je(),M=S[z],M||(M=S[z]=ve[z](e),M.c()),m(M,1),M.m(G.parentNode,G));let xe=_;_=_e(e),_!==xe&&(Ue(),i(N[xe],1,1,()=>{N[xe]=null}),je(),w=N[_],w||(w=N[_]=Me[_](e),w.c()),m(w,1),w.m(P.parentNode,P))},i(e){ge||(m(a.$$.fragment,e),m(t.$$.fragment,e),m(y.$$.fragment,e),m(T.$$.fragment,e),m(j.$$.fragment,e),m(U.$$.fragment,e),m(I.$$.fragment,e),m(J.$$.fragment,e),m(Z.$$.fragment,e),m(A.$$.fragment,e),m(C.$$.fragment,e),m(M),m(E.$$.fragment,e),m(Q.$$.fragment,e),m(W.$$.fragment,e),m(V.$$.fragment,e),m(O.$$.fragment,e),m(F.$$.fragment,e),m(B.$$.fragment,e),m(X.$$.fragment,e),m(H.$$.fragment,e),m(w),m(R.$$.fragment,e),ge=!0)},o(e){i(a.$$.fragment,e),i(t.$$.fragment,e),i(y.$$.fragment,e),i(T.$$.fragment,e),i(j.$$.fragment,e),i(U.$$.fragment,e),i(I.$$.fragment,e),i(J.$$.fragment,e),i(Z.$$.fragment,e),i(A.$$.fragment,e),i(C.$$.fragment,e),i(M),i(E.$$.fragment,e),i(Q.$$.fragment,e),i(W.$$.fragment,e),i(V.$$.fragment,e),i(O.$$.fragment,e),i(F.$$.fragment,e),i(B.$$.fragment,e),i(X.$$.fragment,e),i(H.$$.fragment,e),i(w),i(R.$$.fragment,e),ge=!1},d(e){e&&(n(g),n(s),n(b),n(x),n(q),n(L),n(Y),n(K),n(ee),n(ae),n(te),n(oe),n(re),n(se),n(G),n(ne),n(ie),n(me),n(le),n(de),n(ue),n(ce),n(pe),n(fe),n(P),n($e),n(D)),n(r),$(a,e),$(t,e),$(y,e),$(T,e),$(j,e),$(U,e),$(I,e),$(J,e),$(Z,e),$(A,e),$(C,e),S[z].d(e),$(E,e),$(Q,e),$(W,e),$(V,e),$(O,e),$(F,e),$(B,e),$(X,e),$(H,e),N[_].d(e),$(R,e)}}}const Re='{"title":"Questionário de fim de capítulo","local":"questionário-de-fim-de-capítulo","sections":[{"title":"1. Qual é a ordem do pipeline para a modelagem de linguagem?","local":"1-qual-é-a-ordem-do-pipeline-para-a-modelagem-de-linguagem","sections":[],"depth":3},{"title":"2. Quantas dimensões tem o tensor do Transformer de base, e quais são elas?","local":"2-quantas-dimensões-tem-o-tensor-do-transformer-de-base-e-quais-são-elas","sections":[],"depth":3},{"title":"3. Qual dos seguintes é um exemplo de Tokenização por sub-palavras?","local":"3-qual-dos-seguintes-é-um-exemplo-de-tokenização-por-sub-palavras","sections":[],"depth":3},{"title":"4. O que é uma model head ?","local":"4-o-que-é-uma-model-head-","sections":[],"depth":3},{"title":"5. O que seria um AutoModel ?","local":"5-o-que-seria-um-automodel-","sections":[],"depth":3},{"title":"5. O que seria um TFAutoModel ?","local":"5-o-que-seria-um-tfautomodel-","sections":[],"depth":3},{"title":"6. Quais são as técnicas a serem observadas quando realizar batches com sequências de diferentes tamanhos?","local":"6-quais-são-as-técnicas-a-serem-observadas-quando-realizar-batches-com-sequências-de-diferentes-tamanhos","sections":[],"depth":3},{"title":"7. Qual é o objetivo de aplicar uma função SoftMax à saída de logits para um modelo de classificação sequencial??","local":"7-qual-é-o-objetivo-de-aplicar-uma-função-softmax-à-saída-de-logits-para-um-modelo-de-classificação-sequencial","sections":[],"depth":3},{"title":"8. Qual é o método core da API tokenizer?","local":"8-qual-é-o-método-core-da-api-tokenizer","sections":[],"depth":3},{"title":"9. O que a variável result contém nesta pedaço de código?","local":"9-o-que-a-variável-result-contém-nesta-pedaço-de-código","sections":[],"depth":3},{"title":"10. Tem algo errado com o código abaixo?","local":"10-tem-algo-errado-com-o-código-abaixo","sections":[],"depth":3},{"title":"10. Tem algo errado com o código abaixo?","local":"10-tem-algo-errado-com-o-código-abaixo","sections":[],"depth":3}],"depth":1}';function Se(v,r,g){let s="pt";return Je(()=>{const b=new URLSearchParams(window.location.search);g(0,s=b.get("fw")||"pt")}),[s]}class ea extends Ze{constructor(r){super(),Ae(this,r,Se,He,Ie,{})}}export{ea as component};
