import{S as kn,i as zn,s as wn,e as r,k as c,w as q,t as o,M as Mn,c as l,d as s,m as f,a as n,x as j,h as t,b as y,G as a,g as m,y as k,q as z,o as w,B as M,v as Zn,L as Yo}from"../chunks/vendor-hf-doc-builder.js";import{T as Po}from"../chunks/Tip-hf-doc-builder.js";import{I as ua}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as X}from"../chunks/CodeBlock-hf-doc-builder.js";import{F as jn,M as Qo}from"../chunks/Markdown-hf-doc-builder.js";function Tn(G){let p,b,d,v,_;return{c(){p=r("p"),b=o("Voc\xEA pode tamb\xE9m salvar seu arquivo de configura\xE7\xF5es como um dicion\xE1rio ou at\xE9 mesmo com a diferen\xE7a entre as seus atributos de configura\xE7\xE3o customizados e os atributos de configura\xE7\xE3o padr\xF5es! Olhe a documenta\xE7\xE3o "),d=r("a"),v=o("configuration"),_=o(" para mais detalhes."),this.h()},l($){p=l($,"P",{});var g=n(p);b=t(g,"Voc\xEA pode tamb\xE9m salvar seu arquivo de configura\xE7\xF5es como um dicion\xE1rio ou at\xE9 mesmo com a diferen\xE7a entre as seus atributos de configura\xE7\xE3o customizados e os atributos de configura\xE7\xE3o padr\xF5es! Olhe a documenta\xE7\xE3o "),d=l(g,"A",{href:!0});var T=n(d);v=t(T,"configuration"),T.forEach(s),_=t(g," para mais detalhes."),g.forEach(s),this.h()},h(){y(d,"href","main_classes/configuration")},m($,g){m($,p,g),a(p,b),a(p,d),a(d,v),a(p,_)},d($){$&&s(p)}}}function Vn(G){let p,b,d,v,_,$,g,T,E,B,Z,F,J,x,V,U,h,R,N,W,P;return v=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRNb2RlbCUwQSUwQW15X2NvbmZpZyUyMCUzRCUyMERpc3RpbEJlcnRDb25maWcuZnJvbV9wcmV0cmFpbmVkKCUyMi4lMkZ5b3VyX21vZGVsX3NhdmVfcGF0aCUyRm15X2NvbmZpZy5qc29uJTIyKSUwQW1vZGVsJTIwJTNEJTIwRGlzdGlsQmVydE1vZGVsKG15X2NvbmZpZyk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertModel

<span class="hljs-meta">&gt;&gt;&gt; </span>my_config = DistilBertConfig.from_pretrained(<span class="hljs-string">&quot;./your_model_save_path/my_config.json&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model = DistilBertModel(my_config)`}}),V=new X({props:{code:"bW9kZWwlMjAlM0QlMjBEaXN0aWxCZXJ0TW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkJTIyKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>model = DistilBertModel.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)'}}),W=new X({props:{code:"bW9kZWwlMjAlM0QlMjBEaXN0aWxCZXJ0TW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkJTIyJTJDJTIwY29uZmlnJTNEbXlfY29uZmlnKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>model = DistilBertModel.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>, config=my_config)'}}),{c(){p=r("p"),b=o("Carregar seus atributos de configura\xE7\xE3o customizados em um modelo:"),d=c(),q(v.$$.fragment),_=c(),$=r("p"),g=o("Isso cria um modelo com valores aleat\xF3rios ao inv\xE9s de pr\xE9-treinar os pesos. Voc\xEA n\xE3o ir\xE1 conseguir usar usar esse modelo para nada \xFAtil ainda, at\xE9 voc\xEA treinar ele. Treino \xE9 um processo caro e demorado. Geralmente \xE9 melhor utilizar um modelo pr\xE9-treinado para obter melhores resultados mais r\xE1pido, enquanto usa apenas uma fra\xE7\xE3o dos recursos necess\xE1rios para treinar."),T=c(),E=r("p"),B=o("Criar um modelo pr\xE9-treinado com "),Z=r("code"),F=o("from_pretrained()"),J=o(":"),x=c(),q(V.$$.fragment),U=c(),h=r("p"),R=o("Quando voc\xEA carregar os pesos pr\xE9-treinados, a configura\xE7\xE3o padr\xE3o do modelo \xE9 automaticamente carregada se o modelo \xE9 provido pelo \u{1F917} Transformers. No entanto, voc\xEA ainda consegue mudar - alguns ou todos - os atributos padr\xF5es de configura\xE7\xE3o do modelo com os seus pr\xF3prio atributos, se voc\xEA preferir:"),N=c(),q(W.$$.fragment)},l(u){p=l(u,"P",{});var C=n(p);b=t(C,"Carregar seus atributos de configura\xE7\xE3o customizados em um modelo:"),C.forEach(s),d=f(u),j(v.$$.fragment,u),_=f(u),$=l(u,"P",{});var D=n($);g=t(D,"Isso cria um modelo com valores aleat\xF3rios ao inv\xE9s de pr\xE9-treinar os pesos. Voc\xEA n\xE3o ir\xE1 conseguir usar usar esse modelo para nada \xFAtil ainda, at\xE9 voc\xEA treinar ele. Treino \xE9 um processo caro e demorado. Geralmente \xE9 melhor utilizar um modelo pr\xE9-treinado para obter melhores resultados mais r\xE1pido, enquanto usa apenas uma fra\xE7\xE3o dos recursos necess\xE1rios para treinar."),D.forEach(s),T=f(u),E=l(u,"P",{});var A=n(E);B=t(A,"Criar um modelo pr\xE9-treinado com "),Z=l(A,"CODE",{});var se=n(Z);F=t(se,"from_pretrained()"),se.forEach(s),J=t(A,":"),A.forEach(s),x=f(u),j(V.$$.fragment,u),U=f(u),h=l(u,"P",{});var oe=n(h);R=t(oe,"Quando voc\xEA carregar os pesos pr\xE9-treinados, a configura\xE7\xE3o padr\xE3o do modelo \xE9 automaticamente carregada se o modelo \xE9 provido pelo \u{1F917} Transformers. No entanto, voc\xEA ainda consegue mudar - alguns ou todos - os atributos padr\xF5es de configura\xE7\xE3o do modelo com os seus pr\xF3prio atributos, se voc\xEA preferir:"),oe.forEach(s),N=f(u),j(W.$$.fragment,u)},m(u,C){m(u,p,C),a(p,b),m(u,d,C),k(v,u,C),m(u,_,C),m(u,$,C),a($,g),m(u,T,C),m(u,E,C),a(E,B),a(E,Z),a(Z,F),a(E,J),m(u,x,C),k(V,u,C),m(u,U,C),m(u,h,C),a(h,R),m(u,N,C),k(W,u,C),P=!0},p:Yo,i(u){P||(z(v.$$.fragment,u),z(V.$$.fragment,u),z(W.$$.fragment,u),P=!0)},o(u){w(v.$$.fragment,u),w(V.$$.fragment,u),w(W.$$.fragment,u),P=!1},d(u){u&&s(p),u&&s(d),M(v,u),u&&s(_),u&&s($),u&&s(T),u&&s(E),u&&s(x),M(V,u),u&&s(U),u&&s(h),u&&s(N),M(W,u)}}}function Cn(G){let p,b;return p=new Qo({props:{$$slots:{default:[Vn]},$$scope:{ctx:G}}}),{c(){q(p.$$.fragment)},l(d){j(p.$$.fragment,d)},m(d,v){k(p,d,v),b=!0},p(d,v){const _={};v&2&&(_.$$scope={dirty:v,ctx:d}),p.$set(_)},i(d){b||(z(p.$$.fragment,d),b=!0)},o(d){w(p.$$.fragment,d),b=!1},d(d){M(p,d)}}}function Rn(G){let p,b,d,v,_,$,g,T,E,B,Z,F,J,x,V,U,h,R,N,W,P;return v=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGRGlzdGlsQmVydE1vZGVsJTBBJTBBbXlfY29uZmlnJTIwJTNEJTIwRGlzdGlsQmVydENvbmZpZy5mcm9tX3ByZXRyYWluZWQoJTIyLiUyRnlvdXJfbW9kZWxfc2F2ZV9wYXRoJTJGbXlfY29uZmlnLmpzb24lMjIpJTBBdGZfbW9kZWwlMjAlM0QlMjBURkRpc3RpbEJlcnRNb2RlbChteV9jb25maWcp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFDistilBertModel

<span class="hljs-meta">&gt;&gt;&gt; </span>my_config = DistilBertConfig.from_pretrained(<span class="hljs-string">&quot;./your_model_save_path/my_config.json&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tf_model = TFDistilBertModel(my_config)`}}),V=new X({props:{code:"dGZfbW9kZWwlMjAlM0QlMjBURkRpc3RpbEJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tf_model = TFDistilBertModel.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)'}}),W=new X({props:{code:"dGZfbW9kZWwlMjAlM0QlMjBURkRpc3RpbEJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIlMkMlMjBjb25maWclM0RteV9jb25maWcp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tf_model = TFDistilBertModel.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>, config=my_config)'}}),{c(){p=r("p"),b=o("Carregar os seus pr\xF3prios atributos padr\xF5es de contigura\xE7\xE3o no modelo:"),d=c(),q(v.$$.fragment),_=c(),$=r("p"),g=o("Isso cria um modelo com valores aleat\xF3rios ao inv\xE9s de pr\xE9-treinar os pesos. Voc\xEA n\xE3o ir\xE1 conseguir usar usar esse modelo para nada \xFAtil ainda, at\xE9 voc\xEA treinar ele. Treino \xE9 um processo caro e demorado. Geralmente \xE9 melhor utilizar um modelo pr\xE9-treinado para obter melhores resultados mais r\xE1pido, enquanto usa apenas uma fra\xE7\xE3o dos recursos necess\xE1rios para treinar."),T=c(),E=r("p"),B=o("Criar um modelo pr\xE9-treinado com "),Z=r("code"),F=o("from_pretrained()"),J=o(":"),x=c(),q(V.$$.fragment),U=c(),h=r("p"),R=o("Quando voc\xEA carregar os pesos pr\xE9-treinados, a configura\xE7\xE3o padr\xE3o do modelo \xE9 automaticamente carregada se o modelo \xE9 provido pelo \u{1F917} Transformers. No entanto, voc\xEA ainda consegue mudar - alguns ou todos - os atributos padr\xF5es de configura\xE7\xE3o do modelo com os seus pr\xF3prio atributos, se voc\xEA preferir:"),N=c(),q(W.$$.fragment)},l(u){p=l(u,"P",{});var C=n(p);b=t(C,"Carregar os seus pr\xF3prios atributos padr\xF5es de contigura\xE7\xE3o no modelo:"),C.forEach(s),d=f(u),j(v.$$.fragment,u),_=f(u),$=l(u,"P",{});var D=n($);g=t(D,"Isso cria um modelo com valores aleat\xF3rios ao inv\xE9s de pr\xE9-treinar os pesos. Voc\xEA n\xE3o ir\xE1 conseguir usar usar esse modelo para nada \xFAtil ainda, at\xE9 voc\xEA treinar ele. Treino \xE9 um processo caro e demorado. Geralmente \xE9 melhor utilizar um modelo pr\xE9-treinado para obter melhores resultados mais r\xE1pido, enquanto usa apenas uma fra\xE7\xE3o dos recursos necess\xE1rios para treinar."),D.forEach(s),T=f(u),E=l(u,"P",{});var A=n(E);B=t(A,"Criar um modelo pr\xE9-treinado com "),Z=l(A,"CODE",{});var se=n(Z);F=t(se,"from_pretrained()"),se.forEach(s),J=t(A,":"),A.forEach(s),x=f(u),j(V.$$.fragment,u),U=f(u),h=l(u,"P",{});var oe=n(h);R=t(oe,"Quando voc\xEA carregar os pesos pr\xE9-treinados, a configura\xE7\xE3o padr\xE3o do modelo \xE9 automaticamente carregada se o modelo \xE9 provido pelo \u{1F917} Transformers. No entanto, voc\xEA ainda consegue mudar - alguns ou todos - os atributos padr\xF5es de configura\xE7\xE3o do modelo com os seus pr\xF3prio atributos, se voc\xEA preferir:"),oe.forEach(s),N=f(u),j(W.$$.fragment,u)},m(u,C){m(u,p,C),a(p,b),m(u,d,C),k(v,u,C),m(u,_,C),m(u,$,C),a($,g),m(u,T,C),m(u,E,C),a(E,B),a(E,Z),a(Z,F),a(E,J),m(u,x,C),k(V,u,C),m(u,U,C),m(u,h,C),a(h,R),m(u,N,C),k(W,u,C),P=!0},p:Yo,i(u){P||(z(v.$$.fragment,u),z(V.$$.fragment,u),z(W.$$.fragment,u),P=!0)},o(u){w(v.$$.fragment,u),w(V.$$.fragment,u),w(W.$$.fragment,u),P=!1},d(u){u&&s(p),u&&s(d),M(v,u),u&&s(_),u&&s($),u&&s(T),u&&s(E),u&&s(x),M(V,u),u&&s(U),u&&s(h),u&&s(N),M(W,u)}}}function Jn(G){let p,b;return p=new Qo({props:{$$slots:{default:[Rn]},$$scope:{ctx:G}}}),{c(){q(p.$$.fragment)},l(d){j(p.$$.fragment,d)},m(d,v){k(p,d,v),b=!0},p(d,v){const _={};v&2&&(_.$$scope={dirty:v,ctx:d}),p.$set(_)},i(d){b||(z(p.$$.fragment,d),b=!0)},o(d){w(p.$$.fragment,d),b=!1},d(d){M(p,d)}}}function Wn(G){let p,b,d,v,_,$,g,T,E,B,Z,F,J,x,V,U;return g=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uJTBBJTBBbW9kZWwlMjAlM0QlMjBEaXN0aWxCZXJ0Rm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>model = DistilBertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)`}}),V=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRGb3JRdWVzdGlvbkFuc3dlcmluZyUwQSUwQW1vZGVsJTIwJTNEJTIwRGlzdGlsQmVydEZvclF1ZXN0aW9uQW5zd2VyaW5nLmZyb21fcHJldHJhaW5lZCglMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZCUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertForQuestionAnswering

<span class="hljs-meta">&gt;&gt;&gt; </span>model = DistilBertForQuestionAnswering.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)`}}),{c(){p=r("p"),b=o("Por exemplo, "),d=r("code"),v=o("DistilBertForSequenceClassification"),_=o(" \xE9 um modelo DistilBERT base com uma head de classifica\xE7\xE3o de sequ\xEAncia. A head de calssifica\xE7\xE3o de sequ\xEAncia \xE9 uma camada linear no topo das sa\xEDdas agrupadas."),$=c(),q(g.$$.fragment),T=c(),E=r("p"),B=o("Reutilize facilmente esse ponto de parada para outra tarefe mudando para uma head de modelo diferente. Para uma tarefe de responder quest\xF5es, voc\xEA usaria a head do modelo "),Z=r("code"),F=o("DistilBertForQuestionAnswering"),J=o(". A head de responder quest\xF5es \xE9 similar com a de classifica\xE7\xE3o de sequ\xEAncias exceto o fato de que ela \xE9 uma camada no topo dos estados das sa\xEDdas ocultas."),x=c(),q(V.$$.fragment)},l(h){p=l(h,"P",{});var R=n(p);b=t(R,"Por exemplo, "),d=l(R,"CODE",{});var N=n(d);v=t(N,"DistilBertForSequenceClassification"),N.forEach(s),_=t(R," \xE9 um modelo DistilBERT base com uma head de classifica\xE7\xE3o de sequ\xEAncia. A head de calssifica\xE7\xE3o de sequ\xEAncia \xE9 uma camada linear no topo das sa\xEDdas agrupadas."),R.forEach(s),$=f(h),j(g.$$.fragment,h),T=f(h),E=l(h,"P",{});var W=n(E);B=t(W,"Reutilize facilmente esse ponto de parada para outra tarefe mudando para uma head de modelo diferente. Para uma tarefe de responder quest\xF5es, voc\xEA usaria a head do modelo "),Z=l(W,"CODE",{});var P=n(Z);F=t(P,"DistilBertForQuestionAnswering"),P.forEach(s),J=t(W,". A head de responder quest\xF5es \xE9 similar com a de classifica\xE7\xE3o de sequ\xEAncias exceto o fato de que ela \xE9 uma camada no topo dos estados das sa\xEDdas ocultas."),W.forEach(s),x=f(h),j(V.$$.fragment,h)},m(h,R){m(h,p,R),a(p,b),a(p,d),a(d,v),a(p,_),m(h,$,R),k(g,h,R),m(h,T,R),m(h,E,R),a(E,B),a(E,Z),a(Z,F),a(E,J),m(h,x,R),k(V,h,R),U=!0},p:Yo,i(h){U||(z(g.$$.fragment,h),z(V.$$.fragment,h),U=!0)},o(h){w(g.$$.fragment,h),w(V.$$.fragment,h),U=!1},d(h){h&&s(p),h&&s($),M(g,h),h&&s(T),h&&s(E),h&&s(x),M(V,h)}}}function xn(G){let p,b;return p=new Qo({props:{$$slots:{default:[Wn]},$$scope:{ctx:G}}}),{c(){q(p.$$.fragment)},l(d){j(p.$$.fragment,d)},m(d,v){k(p,d,v),b=!0},p(d,v){const _={};v&2&&(_.$$scope={dirty:v,ctx:d}),p.$set(_)},i(d){b||(z(p.$$.fragment,d),b=!0)},o(d){w(p.$$.fragment,d),b=!1},d(d){M(p,d)}}}function Un(G){let p,b,d,v,_,$,g,T,E,B,Z,F,J,x,V,U;return g=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGRGlzdGlsQmVydEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEF0Zl9tb2RlbCUyMCUzRCUyMFRGRGlzdGlsQmVydEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFDistilBertForSequenceClassification

<span class="hljs-meta">&gt;&gt;&gt; </span>tf_model = TFDistilBertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)`}}),V=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGRGlzdGlsQmVydEZvclF1ZXN0aW9uQW5zd2VyaW5nJTBBJTBBdGZfbW9kZWwlMjAlM0QlMjBURkRpc3RpbEJlcnRGb3JRdWVzdGlvbkFuc3dlcmluZy5mcm9tX3ByZXRyYWluZWQoJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFDistilBertForQuestionAnswering

<span class="hljs-meta">&gt;&gt;&gt; </span>tf_model = TFDistilBertForQuestionAnswering.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)`}}),{c(){p=r("p"),b=o("Por exemplo, "),d=r("code"),v=o("TFDistilBertForSequenceClassification"),_=o(" \xE9 um modelo DistilBERT base com uma head de classifica\xE7\xE3o de sequ\xEAncia. A head de calssifica\xE7\xE3o de sequ\xEAncia \xE9 uma camada linear no topo das sa\xEDdas agrupadas."),$=c(),q(g.$$.fragment),T=c(),E=r("p"),B=o("Reutilize facilmente esse ponto de parada para outra tarefe mudando para uma head de modelo diferente. Para uma tarefe de responder quest\xF5es, voc\xEA usaria a head do modelo "),Z=r("code"),F=o("TFDistilBertForQuestionAnswering"),J=o(". A head de responder quest\xF5es \xE9 similar com a de classifica\xE7\xE3o de sequ\xEAncias exceto o fato de que ela \xE9 uma camada no topo dos estados das sa\xEDdas ocultas."),x=c(),q(V.$$.fragment)},l(h){p=l(h,"P",{});var R=n(p);b=t(R,"Por exemplo, "),d=l(R,"CODE",{});var N=n(d);v=t(N,"TFDistilBertForSequenceClassification"),N.forEach(s),_=t(R," \xE9 um modelo DistilBERT base com uma head de classifica\xE7\xE3o de sequ\xEAncia. A head de calssifica\xE7\xE3o de sequ\xEAncia \xE9 uma camada linear no topo das sa\xEDdas agrupadas."),R.forEach(s),$=f(h),j(g.$$.fragment,h),T=f(h),E=l(h,"P",{});var W=n(E);B=t(W,"Reutilize facilmente esse ponto de parada para outra tarefe mudando para uma head de modelo diferente. Para uma tarefe de responder quest\xF5es, voc\xEA usaria a head do modelo "),Z=l(W,"CODE",{});var P=n(Z);F=t(P,"TFDistilBertForQuestionAnswering"),P.forEach(s),J=t(W,". A head de responder quest\xF5es \xE9 similar com a de classifica\xE7\xE3o de sequ\xEAncias exceto o fato de que ela \xE9 uma camada no topo dos estados das sa\xEDdas ocultas."),W.forEach(s),x=f(h),j(V.$$.fragment,h)},m(h,R){m(h,p,R),a(p,b),a(p,d),a(d,v),a(p,_),m(h,$,R),k(g,h,R),m(h,T,R),m(h,E,R),a(E,B),a(E,Z),a(Z,F),a(E,J),m(h,x,R),k(V,h,R),U=!0},p:Yo,i(h){U||(z(g.$$.fragment,h),z(V.$$.fragment,h),U=!0)},o(h){w(g.$$.fragment,h),w(V.$$.fragment,h),U=!1},d(h){h&&s(p),h&&s($),M(g,h),h&&s(T),h&&s(E),h&&s(x),M(V,h)}}}function Fn(G){let p,b;return p=new Qo({props:{$$slots:{default:[Un]},$$scope:{ctx:G}}}),{c(){q(p.$$.fragment)},l(d){j(p.$$.fragment,d)},m(d,v){k(p,d,v),b=!0},p(d,v){const _={};v&2&&(_.$$scope={dirty:v,ctx:d}),p.$set(_)},i(d){b||(z(p.$$.fragment,d),b=!0)},o(d){w(p.$$.fragment,d),b=!1},d(d){M(p,d)}}}function Gn(G){let p,b,d,v,_;return{c(){p=r("p"),b=o("Nem todo modelo suporta um \u2018fast tokenizer\u2019. De uma olhada aqui "),d=r("a"),v=o("table"),_=o(" pra checar se um modelo suporta \u2018fast tokenizer\u2019."),this.h()},l($){p=l($,"P",{});var g=n(p);b=t(g,"Nem todo modelo suporta um \u2018fast tokenizer\u2019. De uma olhada aqui "),d=l(g,"A",{href:!0});var T=n(d);v=t(T,"table"),T.forEach(s),_=t(g," pra checar se um modelo suporta \u2018fast tokenizer\u2019."),g.forEach(s),this.h()},h(){y(d,"href","index#supported-frameworks")},m($,g){m($,p,g),a(p,b),a(p,d),a(d,v),a(p,_)},d($){$&&s(p)}}}function Bn(G){let p,b,d,v,_,$,g,T,E,B,Z;return{c(){p=r("p"),b=o("Pos padr\xE3o, "),d=r("code"),v=o("AutoTokenizer"),_=o(" tentar\xE1 carregar um \u2018fast tokenizer\u2019. Voc\xEA pode disabilitar esse comportamento colocando "),$=r("code"),g=o("use_fast=False"),T=o(" no "),E=r("code"),B=o("from_pretrained"),Z=o(".")},l(F){p=l(F,"P",{});var J=n(p);b=t(J,"Pos padr\xE3o, "),d=l(J,"CODE",{});var x=n(d);v=t(x,"AutoTokenizer"),x.forEach(s),_=t(J," tentar\xE1 carregar um \u2018fast tokenizer\u2019. Voc\xEA pode disabilitar esse comportamento colocando "),$=l(J,"CODE",{});var V=n($);g=t(V,"use_fast=False"),V.forEach(s),T=t(J," no "),E=l(J,"CODE",{});var U=n(E);B=t(U,"from_pretrained"),U.forEach(s),Z=t(J,"."),J.forEach(s)},m(F,J){m(F,p,J),a(p,b),a(p,d),a(d,v),a(p,_),a(p,$),a($,g),a(p,T),a(p,E),a(E,B),a(p,Z)},d(F){F&&s(p)}}}function Xn(G){let p,b,d,v,_;return{c(){p=r("p"),b=o("Se voc\xEA n\xE3o estiver procurando por nenhuma customiza\xE7\xE3o, apenas use o m\xE9todo "),d=r("code"),v=o("from_pretrained"),_=o(" para carregar par\xE2metros do modelo de extrator de features padr\xE3o.")},l($){p=l($,"P",{});var g=n(p);b=t(g,"Se voc\xEA n\xE3o estiver procurando por nenhuma customiza\xE7\xE3o, apenas use o m\xE9todo "),d=l(g,"CODE",{});var T=n(d);v=t(T,"from_pretrained"),T.forEach(s),_=t(g," para carregar par\xE2metros do modelo de extrator de features padr\xE3o."),g.forEach(s)},m($,g){m($,p,g),a(p,b),a(p,d),a(d,v),a(p,_)},d($){$&&s(p)}}}function Dn(G){let p,b,d,v,_,$,g,T,E,B,Z,F,J,x,V,U,h,R,N,W,P,u,C,D,A,se,oe,ka,Ao,Io,za,So,Oo,wa,Ho,Lo,Ma,Ko,js,te,de,Za,Fe,et,Ta,at,ks,Q,st,ca,ot,tt,Va,rt,lt,Ca,nt,it,Ra,mt,pt,Ja,dt,ut,zs,L,ct,fa,ft,ht,Wa,vt,bt,ws,Ge,Ms,re,xa,$t,gt,Ua,_t,yt,Zs,ue,Be,Et,Fa,qt,jt,kt,Xe,zt,Ga,wt,Mt,Ts,De,Vs,ce,Zt,Ba,Tt,Vt,Cs,Ne,Rs,fe,Ct,Xa,Rt,Jt,Js,Pe,Ws,he,Wt,Da,xt,Ut,xs,Ye,Us,ve,Fs,le,be,Na,Qe,Ft,Pa,Gt,Gs,Y,Bt,ha,Xt,Dt,Ya,Nt,Pt,Qa,Yt,Qt,Ae,Aa,At,It,Ie,Ia,St,Ot,Se,Sa,Ht,Lt,Bs,$e,Xs,ne,ge,Oa,Oe,Kt,Ha,er,Ds,_e,ar,La,sr,or,Ns,ye,Ps,ie,Ee,Ka,He,tr,es,rr,Ys,qe,lr,va,nr,ir,Qs,je,ba,as,mr,pr,dr,K,ss,ur,cr,Le,fr,hr,os,vr,br,As,$a,$r,Is,ke,Ss,ze,gr,ts,_r,yr,Os,Ke,Hs,we,Er,rs,qr,jr,Ls,ea,Ks,Me,kr,ls,zr,wr,eo,aa,ao,Ze,so,me,Te,ns,sa,Mr,is,Zr,oo,S,Tr,ms,Vr,Cr,ps,Rr,Jr,ds,Wr,xr,to,ee,Ur,us,Fr,Gr,ga,Br,Xr,ro,oa,lo,Ve,no,Ce,Dr,cs,Nr,Pr,io,ta,mo,Re,Yr,fs,Qr,Ar,po,ra,uo,pe,Je,hs,la,Ir,vs,Sr,co,We,Or,bs,Hr,Lr,fo,_a,Kr,ho,na,vo,ya,el,bo,ia,$o,xe,al,$s,sl,ol,go,ma,_o,Ea,tl,yo;return $=new ua({}),Fe=new ua({}),Ge=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRDb25maWclMEElMEFjb25maWclMjAlM0QlMjBEaXN0aWxCZXJ0Q29uZmlnKCklMEFwcmludChjb25maWcp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertConfig

<span class="hljs-meta">&gt;&gt;&gt; </span>config = DistilBertConfig()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(config)
DistilBertConfig {
  <span class="hljs-string">&quot;activation&quot;</span>: <span class="hljs-string">&quot;gelu&quot;</span>,
  <span class="hljs-string">&quot;attention_dropout&quot;</span>: <span class="hljs-number">0.1</span>,
  <span class="hljs-string">&quot;dim&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;dropout&quot;</span>: <span class="hljs-number">0.1</span>,
  <span class="hljs-string">&quot;hidden_dim&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;initializer_range&quot;</span>: <span class="hljs-number">0.02</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;model_type&quot;</span>: <span class="hljs-string">&quot;distilbert&quot;</span>,
  <span class="hljs-string">&quot;n_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;n_layers&quot;</span>: <span class="hljs-number">6</span>,
  <span class="hljs-string">&quot;pad_token_id&quot;</span>: <span class="hljs-number">0</span>,
  <span class="hljs-string">&quot;qa_dropout&quot;</span>: <span class="hljs-number">0.1</span>,
  <span class="hljs-string">&quot;seq_classif_dropout&quot;</span>: <span class="hljs-number">0.2</span>,
  <span class="hljs-string">&quot;sinusoidal_pos_embds&quot;</span>: false,
  <span class="hljs-string">&quot;transformers_version&quot;</span>: <span class="hljs-string">&quot;4.16.2&quot;</span>,
  <span class="hljs-string">&quot;vocab_size&quot;</span>: <span class="hljs-number">30522</span>
}`}}),De=new X({props:{code:"bXlfY29uZmlnJTIwJTNEJTIwRGlzdGlsQmVydENvbmZpZyhhY3RpdmF0aW9uJTNEJTIycmVsdSUyMiUyQyUyMGF0dGVudGlvbl9kcm9wb3V0JTNEMC40KSUwQXByaW50KG15X2NvbmZpZyk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>my_config = DistilBertConfig(activation=<span class="hljs-string">&quot;relu&quot;</span>, attention_dropout=<span class="hljs-number">0.4</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(my_config)
DistilBertConfig {
  <span class="hljs-string">&quot;activation&quot;</span>: <span class="hljs-string">&quot;relu&quot;</span>,
  <span class="hljs-string">&quot;attention_dropout&quot;</span>: <span class="hljs-number">0.4</span>,
  <span class="hljs-string">&quot;dim&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;dropout&quot;</span>: <span class="hljs-number">0.1</span>,
  <span class="hljs-string">&quot;hidden_dim&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;initializer_range&quot;</span>: <span class="hljs-number">0.02</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;model_type&quot;</span>: <span class="hljs-string">&quot;distilbert&quot;</span>,
  <span class="hljs-string">&quot;n_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;n_layers&quot;</span>: <span class="hljs-number">6</span>,
  <span class="hljs-string">&quot;pad_token_id&quot;</span>: <span class="hljs-number">0</span>,
  <span class="hljs-string">&quot;qa_dropout&quot;</span>: <span class="hljs-number">0.1</span>,
  <span class="hljs-string">&quot;seq_classif_dropout&quot;</span>: <span class="hljs-number">0.2</span>,
  <span class="hljs-string">&quot;sinusoidal_pos_embds&quot;</span>: false,
  <span class="hljs-string">&quot;transformers_version&quot;</span>: <span class="hljs-string">&quot;4.16.2&quot;</span>,
  <span class="hljs-string">&quot;vocab_size&quot;</span>: <span class="hljs-number">30522</span>
}`}}),Ne=new X({props:{code:"bXlfY29uZmlnJTIwJTNEJTIwRGlzdGlsQmVydENvbmZpZy5mcm9tX3ByZXRyYWluZWQoJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIlMkMlMjBhY3RpdmF0aW9uJTNEJTIycmVsdSUyMiUyQyUyMGF0dGVudGlvbl9kcm9wb3V0JTNEMC40KQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>my_config = DistilBertConfig.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>, activation=<span class="hljs-string">&quot;relu&quot;</span>, attention_dropout=<span class="hljs-number">0.4</span>)'}}),Pe=new X({props:{code:"bXlfY29uZmlnLnNhdmVfcHJldHJhaW5lZChzYXZlX2RpcmVjdG9yeSUzRCUyMi4lMkZ5b3VyX21vZGVsX3NhdmVfcGF0aCUyMik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>my_config.save_pretrained(save_directory=<span class="hljs-string">&quot;./your_model_save_path&quot;</span>)'}}),Ye=new X({props:{code:"bXlfY29uZmlnJTIwJTNEJTIwRGlzdGlsQmVydENvbmZpZy5mcm9tX3ByZXRyYWluZWQoJTIyLiUyRnlvdXJfbW9kZWxfc2F2ZV9wYXRoJTJGbXlfY29uZmlnLmpzb24lMjIp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>my_config = DistilBertConfig.from_pretrained(<span class="hljs-string">&quot;./your_model_save_path/my_config.json&quot;</span>)'}}),ve=new Po({props:{$$slots:{default:[Tn]},$$scope:{ctx:G}}}),Qe=new ua({}),$e=new jn({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[Jn],pytorch:[Cn]},$$scope:{ctx:G}}}),Oe=new ua({}),ye=new jn({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[Fn],pytorch:[xn]},$$scope:{ctx:G}}}),He=new ua({}),ke=new Po({props:{warning:!0,$$slots:{default:[Gn]},$$scope:{ctx:G}}}),Ke=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRUb2tlbml6ZXIlMEElMEFteV90b2tlbml6ZXIlMjAlM0QlMjBEaXN0aWxCZXJ0VG9rZW5pemVyKHZvY2FiX2ZpbGUlM0QlMjJteV92b2NhYl9maWxlLnR4dCUyMiUyQyUyMGRvX2xvd2VyX2Nhc2UlM0RGYWxzZSUyQyUyMHBhZGRpbmdfc2lkZSUzRCUyMmxlZnQlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>my_tokenizer = DistilBertTokenizer(vocab_file=<span class="hljs-string">&quot;my_vocab_file.txt&quot;</span>, do_lower_case=<span class="hljs-literal">False</span>, padding_side=<span class="hljs-string">&quot;left&quot;</span>)`}}),ea=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRUb2tlbml6ZXIlMEElMEFzbG93X3Rva2VuaXplciUyMCUzRCUyMERpc3RpbEJlcnRUb2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>slow_tokenizer = DistilBertTokenizer.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)`}}),aa=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERpc3RpbEJlcnRUb2tlbml6ZXJGYXN0JTBBJTBBZmFzdF90b2tlbml6ZXIlMjAlM0QlMjBEaXN0aWxCZXJ0VG9rZW5pemVyRmFzdC5mcm9tX3ByZXRyYWluZWQoJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DistilBertTokenizerFast

<span class="hljs-meta">&gt;&gt;&gt; </span>fast_tokenizer = DistilBertTokenizerFast.from_pretrained(<span class="hljs-string">&quot;distilbert-base-uncased&quot;</span>)`}}),Ze=new Po({props:{$$slots:{default:[Bn]},$$scope:{ctx:G}}}),sa=new ua({}),oa=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFZpVEZlYXR1cmVFeHRyYWN0b3IlMEElMEF2aXRfZXh0cmFjdG9yJTIwJTNEJTIwVmlURmVhdHVyZUV4dHJhY3RvcigpJTBBcHJpbnQodml0X2V4dHJhY3Rvcik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> ViTFeatureExtractor

<span class="hljs-meta">&gt;&gt;&gt; </span>vit_extractor = ViTFeatureExtractor()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(vit_extractor)
ViTFeatureExtractor {
  <span class="hljs-string">&quot;do_normalize&quot;</span>: true,
  <span class="hljs-string">&quot;do_resize&quot;</span>: true,
  <span class="hljs-string">&quot;feature_extractor_type&quot;</span>: <span class="hljs-string">&quot;ViTFeatureExtractor&quot;</span>,
  <span class="hljs-string">&quot;image_mean&quot;</span>: [
    <span class="hljs-number">0.5</span>,
    <span class="hljs-number">0.5</span>,
    <span class="hljs-number">0.5</span>
  ],
  <span class="hljs-string">&quot;image_std&quot;</span>: [
    <span class="hljs-number">0.5</span>,
    <span class="hljs-number">0.5</span>,
    <span class="hljs-number">0.5</span>
  ],
  <span class="hljs-string">&quot;resample&quot;</span>: <span class="hljs-number">2</span>,
  <span class="hljs-string">&quot;size&quot;</span>: <span class="hljs-number">224</span>
}`}}),Ve=new Po({props:{$$slots:{default:[Xn]},$$scope:{ctx:G}}}),ta=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFZpVEZlYXR1cmVFeHRyYWN0b3IlMEElMEFteV92aXRfZXh0cmFjdG9yJTIwJTNEJTIwVmlURmVhdHVyZUV4dHJhY3RvcihyZXNhbXBsZSUzRCUyMlBJTC5JbWFnZS5CT1glMjIlMkMlMjBkb19ub3JtYWxpemUlM0RGYWxzZSUyQyUyMGltYWdlX21lYW4lM0QlNUIwLjMlMkMlMjAwLjMlMkMlMjAwLjMlNUQpJTBBcHJpbnQobXlfdml0X2V4dHJhY3Rvcik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> ViTFeatureExtractor

<span class="hljs-meta">&gt;&gt;&gt; </span>my_vit_extractor = ViTFeatureExtractor(resample=<span class="hljs-string">&quot;PIL.Image.BOX&quot;</span>, do_normalize=<span class="hljs-literal">False</span>, image_mean=[<span class="hljs-number">0.3</span>, <span class="hljs-number">0.3</span>, <span class="hljs-number">0.3</span>])
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(my_vit_extractor)
ViTFeatureExtractor {
  <span class="hljs-string">&quot;do_normalize&quot;</span>: false,
  <span class="hljs-string">&quot;do_resize&quot;</span>: true,
  <span class="hljs-string">&quot;feature_extractor_type&quot;</span>: <span class="hljs-string">&quot;ViTFeatureExtractor&quot;</span>,
  <span class="hljs-string">&quot;image_mean&quot;</span>: [
    <span class="hljs-number">0.3</span>,
    <span class="hljs-number">0.3</span>,
    <span class="hljs-number">0.3</span>
  ],
  <span class="hljs-string">&quot;image_std&quot;</span>: [
    <span class="hljs-number">0.5</span>,
    <span class="hljs-number">0.5</span>,
    <span class="hljs-number">0.5</span>
  ],
  <span class="hljs-string">&quot;resample&quot;</span>: <span class="hljs-string">&quot;PIL.Image.BOX&quot;</span>,
  <span class="hljs-string">&quot;size&quot;</span>: <span class="hljs-number">224</span>
}`}}),ra=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFdhdjJWZWMyRmVhdHVyZUV4dHJhY3RvciUwQSUwQXcydjJfZXh0cmFjdG9yJTIwJTNEJTIwV2F2MlZlYzJGZWF0dXJlRXh0cmFjdG9yKCklMEFwcmludCh3MnYyX2V4dHJhY3Rvcik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Wav2Vec2FeatureExtractor

<span class="hljs-meta">&gt;&gt;&gt; </span>w2v2_extractor = Wav2Vec2FeatureExtractor()
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(w2v2_extractor)
Wav2Vec2FeatureExtractor {
  <span class="hljs-string">&quot;do_normalize&quot;</span>: true,
  <span class="hljs-string">&quot;feature_extractor_type&quot;</span>: <span class="hljs-string">&quot;Wav2Vec2FeatureExtractor&quot;</span>,
  <span class="hljs-string">&quot;feature_size&quot;</span>: <span class="hljs-number">1</span>,
  <span class="hljs-string">&quot;padding_side&quot;</span>: <span class="hljs-string">&quot;right&quot;</span>,
  <span class="hljs-string">&quot;padding_value&quot;</span>: <span class="hljs-number">0.0</span>,
  <span class="hljs-string">&quot;return_attention_mask&quot;</span>: false,
  <span class="hljs-string">&quot;sampling_rate&quot;</span>: <span class="hljs-number">16000</span>
}`}}),la=new ua({}),na=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFdhdjJWZWMyRmVhdHVyZUV4dHJhY3RvciUwQSUwQWZlYXR1cmVfZXh0cmFjdG9yJTIwJTNEJTIwV2F2MlZlYzJGZWF0dXJlRXh0cmFjdG9yKHBhZGRpbmdfdmFsdWUlM0QxLjAlMkMlMjBkb19ub3JtYWxpemUlM0RUcnVlKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Wav2Vec2FeatureExtractor

<span class="hljs-meta">&gt;&gt;&gt; </span>feature_extractor = Wav2Vec2FeatureExtractor(padding_value=<span class="hljs-number">1.0</span>, do_normalize=<span class="hljs-literal">True</span>)`}}),ia=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFdhdjJWZWMyQ1RDVG9rZW5pemVyJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwV2F2MlZlYzJDVENUb2tlbml6ZXIodm9jYWJfZmlsZSUzRCUyMm15X3ZvY2FiX2ZpbGUudHh0JTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Wav2Vec2CTCTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = Wav2Vec2CTCTokenizer(vocab_file=<span class="hljs-string">&quot;my_vocab_file.txt&quot;</span>)`}}),ma=new X({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFdhdjJWZWMyUHJvY2Vzc29yJTBBJTBBcHJvY2Vzc29yJTIwJTNEJTIwV2F2MlZlYzJQcm9jZXNzb3IoZmVhdHVyZV9leHRyYWN0b3IlM0RmZWF0dXJlX2V4dHJhY3RvciUyQyUyMHRva2VuaXplciUzRHRva2VuaXplcik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Wav2Vec2Processor

<span class="hljs-meta">&gt;&gt;&gt; </span>processor = Wav2Vec2Processor(feature_extractor=feature_extractor, tokenizer=tokenizer)`}}),{c(){p=r("meta"),b=c(),d=r("h1"),v=r("a"),_=r("span"),q($.$$.fragment),g=c(),T=r("span"),E=o("Criar uma arquitetura customizada"),B=c(),Z=r("p"),F=o("Uma "),J=r("a"),x=r("code"),V=o("AutoClass"),U=o(" automaticamente infere a arquitetura do modelo e baixa configura\xE7\xF5es e pesos pr\xE9-treinados. Geralmente, n\xF3s recomendamos usar uma "),h=r("code"),R=o("AutoClass"),N=o(" para produzir um c\xF3digo independente de checkpoints. Mas usu\xE1rios que querem mais contole sobre par\xE2metros espec\xEDficos do modelo pode criar um modelo customizado \u{1F917} Transformers a partir de algumas classes bases. Isso pode ser particulamente \xFAtil para algu\xE9m que est\xE1 interessado em estudar, treinar ou fazer experimentos com um modelo \u{1F917} Transformers. Nesse tutorial, ser\xE1 explicado como criar um modelo customizado sem uma "),W=r("code"),P=o("AutoClass"),u=o(". Aprenda como:"),C=c(),D=r("ul"),A=r("li"),se=o("Carregar e customizar a configura\xE7\xE3o de um modelo."),oe=c(),ka=r("li"),Ao=o("Criar a arquitetura de um modelo."),Io=c(),za=r("li"),So=o("Criar um tokenizer r\xE1pido e devagar para textos."),Oo=c(),wa=r("li"),Ho=o("Criar extrator de features para tarefas envolvendo audio e imagem."),Lo=c(),Ma=r("li"),Ko=o("Criar um processador para tarefas multimodais."),js=c(),te=r("h2"),de=r("a"),Za=r("span"),q(Fe.$$.fragment),et=c(),Ta=r("span"),at=o("configuration"),ks=c(),Q=r("p"),st=o("A "),ca=r("a"),ot=o("configuration"),tt=o(" refere-se a atributos espec\xEDficos de um modelo. Cada configura\xE7\xE3o de modelo tem atributos diferentes; por exemplo, todos modelo de PLN possuem os atributos "),Va=r("code"),rt=o("hidden_size"),lt=o(", "),Ca=r("code"),nt=o("num_attention_heads"),it=o(", "),Ra=r("code"),mt=o("num_hidden_layers"),pt=o(" e "),Ja=r("code"),dt=o("vocab_size"),ut=o(" em comum. Esse atributos especificam o numero de \u2018attention heads\u2019 ou \u2018hidden layers\u2019 para construir um modelo."),zs=c(),L=r("p"),ct=o("D\xEA uma olhada a mais em "),fa=r("a"),ft=o("DistilBERT"),ht=o(" acessando "),Wa=r("code"),vt=o("DistilBertConfig"),bt=o(" para observar esses atributos:"),ws=c(),q(Ge.$$.fragment),Ms=c(),re=r("p"),xa=r("code"),$t=o("DistilBertConfig"),gt=o(" mostra todos os atributos padr\xF5es usados para construir um "),Ua=r("code"),_t=o("DistilBertModel"),yt=o(" base. Todos atributos s\xE3o customiz\xE1veis, o que cria espa\xE7o para experimentos. Por exemplo, voc\xEA pode customizar um modelo padr\xE3o para:"),Zs=c(),ue=r("ul"),Be=r("li"),Et=o("Tentar uma fun\xE7\xE3o de ativa\xE7\xE3o diferente com o par\xE2metro "),Fa=r("code"),qt=o("activation"),jt=o("."),kt=c(),Xe=r("li"),zt=o("Usar uma taxa de desist\xEAncia maior para as probabilidades de \u2018attention\u2019 com o par\xE2metro "),Ga=r("code"),wt=o("attention_dropout"),Mt=o("."),Ts=c(),q(De.$$.fragment),Vs=c(),ce=r("p"),Zt=o("Atributos de um modelo pr\xE9-treinado podem ser modificados na fun\xE7\xE3o "),Ba=r("code"),Tt=o("from_pretrained()"),Vt=o(":"),Cs=c(),q(Ne.$$.fragment),Rs=c(),fe=r("p"),Ct=o("Uma vez que voc\xEA est\xE1 satisfeito com as configura\xE7\xF5es do seu modelo, voc\xEA consegue salvar elas com "),Xa=r("code"),Rt=o("save_pretrained()"),Jt=o(". Seu arquivo de configura\xE7\xF5es est\xE1 salvo como um arquivo JSON no diret\xF3rio especificado:"),Js=c(),q(Pe.$$.fragment),Ws=c(),he=r("p"),Wt=o("Para reusar o arquivo de configura\xE7\xF5es, carregue com "),Da=r("code"),xt=o("from_pretrained()"),Ut=o(":"),xs=c(),q(Ye.$$.fragment),Us=c(),q(ve.$$.fragment),Fs=c(),le=r("h2"),be=r("a"),Na=r("span"),q(Qe.$$.fragment),Ft=c(),Pa=r("span"),Gt=o("Modelo"),Gs=c(),Y=r("p"),Bt=o("O pr\xF3ximo passo \xE9 criar um "),ha=r("a"),Xt=o("model"),Dt=o(". O modelo - tamb\xE9m vagamente referido como arquitetura - define o que cada camada est\xE1 fazendo e quais opera\xE7\xF5es est\xE3o acontecendo. Atributos como "),Ya=r("code"),Nt=o("num_hidden_layers"),Pt=o(" das configura\xE7\xF5es s\xE3o utilizados para definir a arquitetura. Todo modelo compartilha a classe base "),Qa=r("code"),Yt=o("PreTrainedModel"),Qt=o(" e alguns m\xE9todos em comum como redimensionar o tamanho dos embeddings de entrada e podar as \u2018self-attention heads\u2019. Al\xE9m disso, todos os modelos tamb\xE9m s\xE3o subclasses de "),Ae=r("a"),Aa=r("code"),At=o("torch.nn.Module"),It=o(", "),Ie=r("a"),Ia=r("code"),St=o("tf.keras.Model"),Ot=o(" ou "),Se=r("a"),Sa=r("code"),Ht=o("flax.linen.Module"),Lt=o(". Isso significa que os modelos s\xE3o compat\xEDveis com cada respectivo uso de framework."),Bs=c(),q($e.$$.fragment),Xs=c(),ne=r("h3"),ge=r("a"),Oa=r("span"),q(Oe.$$.fragment),Kt=c(),Ha=r("span"),er=o("Heads do modelo"),Ds=c(),_e=r("p"),ar=o("Neste ponto, voc\xEA tem um modelo b\xE1sico do DistilBERT que gera os "),La=r("em"),sr=o("estados ocultos"),or=o(". Os estados ocultos s\xE3o passados como entrada para a head do moelo para produzir a sa\xEDda final. \u{1F917} Transformers fornece uma head de modelo diferente para cada tarefa desde que o modelo suporte essa tarefa (por exemplo, voc\xEA n\xE3o consegue utilizar o modelo DistilBERT para uma tarefa de \u2018sequence-to-sequence\u2019 como tradu\xE7\xE3o)."),Ns=c(),q(ye.$$.fragment),Ps=c(),ie=r("h2"),Ee=r("a"),Ka=r("span"),q(He.$$.fragment),tr=c(),es=r("span"),rr=o("Tokenizer"),Ys=c(),qe=r("p"),lr=o("A \xFAtlima classe base que voc\xEA precisa antes de usar um modelo para dados textuais \xE9 a "),va=r("a"),nr=o("tokenizer"),ir=o(" para converter textos originais para tensores. Existem dois tipos de tokenizers que voc\xEA pode usar com \u{1F917} Transformers:"),Qs=c(),je=r("ul"),ba=r("li"),as=r("code"),mr=o("PreTrainedTokenizer"),pr=o(": uma implementa\xE7\xE3o em Python de um tokenizer."),dr=c(),K=r("li"),ss=r("code"),ur=o("PreTrainedTokenizerFast"),cr=o(": um tokenizer da nossa biblioteca "),Le=r("a"),fr=o("\u{1F917} Tokenizer"),hr=o(" baseada em Rust. Esse tipo de tokenizer \xE9 significantemente mais rapido - especialmente durante tokenization de codifica\xE7\xE3o - devido a implementa\xE7\xE3o em Rust. O tokenizer r\xE1pido tambem oferece m\xE9todos adicionais como "),os=r("em"),vr=o("offset mapping"),br=o(" que mapeia tokens para suar palavras ou caracteres originais."),As=c(),$a=r("p"),$r=o("Os dois tokenizers suporta m\xE9todos comuns como os de codificar e decodificar, adicionar novos tokens, e gerenciar tokens especiais."),Is=c(),q(ke.$$.fragment),Ss=c(),ze=r("p"),gr=o("Se voc\xEA treinou seu pr\xF3rpio tokenizer, voc\xEA pode criar um a partir do seu arquivo "),ts=r("em"),_r=o("vocabulary"),yr=o(":"),Os=c(),q(Ke.$$.fragment),Hs=c(),we=r("p"),Er=o("\xC9 importante lembrar que o vocabul\xE1rio de um tokenizer customizado ser\xE1 diferente de um vocabul\xE1rio gerado pelo tokenizer de um modelo pr\xE9 treinado. Voc\xEA precisa usar o vocabul\xE1rio de um modelo pr\xE9 treinado se voc\xEA estiver usando um modelo pr\xE9 treinado, caso contr\xE1rio as entradas n\xE3o far\xE3o sentido. Criando um tokenizer com um vocabul\xE1rio de um modelo pr\xE9 treinado com a classe "),rs=r("code"),qr=o("DistilBertTokenizer"),jr=o(":"),Ls=c(),q(ea.$$.fragment),Ks=c(),Me=r("p"),kr=o("Criando um \u2018fast tokenizer\u2019 com a classe "),ls=r("code"),zr=o("DistilBertTokenizerFast"),wr=o(":"),eo=c(),q(aa.$$.fragment),ao=c(),q(Ze.$$.fragment),so=c(),me=r("h2"),Te=r("a"),ns=r("span"),q(sa.$$.fragment),Mr=c(),is=r("span"),Zr=o("Extrator de features"),oo=c(),S=r("p"),Tr=o("Um extrator de features processa entradas de imagem ou \xE1udio. Ele herda da classe base "),ms=r("code"),Vr=o("FeatureExtractionMixin"),Cr=o(", e pode tamb\xE9m herdar da classe "),ps=r("code"),Rr=o("ImageFeatureExtractionMixin"),Jr=o(" para processamento de features de imagem ou da classe "),ds=r("code"),Wr=o("SequenceFeatureExtractor"),xr=o(" para processamento de entradas de \xE1udio."),to=c(),ee=r("p"),Ur=o("Dependendo do que voc\xEA est\xE1 trabalhando em um audio ou uma tarefa de vis\xE3o, crie um estrator de features associado com o modelo que voc\xEA est\xE1 usando. Por exemplo, crie um "),us=r("code"),Fr=o("ViTFeatureExtractor"),Gr=o(" padr\xE3o se voc\xEA estiver usando "),ga=r("a"),Br=o("ViT"),Xr=o(" para classifica\xE7\xE3o de imagens:"),ro=c(),q(oa.$$.fragment),lo=c(),q(Ve.$$.fragment),no=c(),Ce=r("p"),Dr=o("Modifique qualquer par\xE2metro dentre os "),cs=r("code"),Nr=o("ViTFeatureExtractor"),Pr=o(" para criar seu extrator de features customizado."),io=c(),q(ta.$$.fragment),mo=c(),Re=r("p"),Yr=o("Para entradas de \xE1utio, voc\xEA pode criar um "),fs=r("code"),Qr=o("Wav2Vec2FeatureExtractor"),Ar=o(" e customizar os par\xE2metros de uma forma similar:"),po=c(),q(ra.$$.fragment),uo=c(),pe=r("h2"),Je=r("a"),hs=r("span"),q(la.$$.fragment),Ir=c(),vs=r("span"),Sr=o("Processor"),co=c(),We=r("p"),Or=o("Para modelos que suportam tarefas multimodais, \u{1F917} Transformers oferece uma classe processadora que convenientemente cobre um extrator de features e tokenizer dentro de um \xFAnico objeto. Por exemplo, vamos usar o "),bs=r("code"),Hr=o("Wav2Vec2Processor"),Lr=o(" para uma tarefa de reconhecimento de fala autom\xE1tica (ASR). ASR transcreve \xE1udio para texto, ent\xE3o voc\xEA ir\xE1 precisar de um extrator de um features e um tokenizer."),fo=c(),_a=r("p"),Kr=o("Crie um extrator de features para lidar com as entradas de \xE1udio."),ho=c(),q(na.$$.fragment),vo=c(),ya=r("p"),el=o("Crie um tokenizer para lidar com a entrada de textos:"),bo=c(),q(ia.$$.fragment),$o=c(),xe=r("p"),al=o("Combine o extrator de features e o tokenizer no "),$s=r("code"),sl=o("Wav2Vec2Processor"),ol=o(":"),go=c(),q(ma.$$.fragment),_o=c(),Ea=r("p"),tl=o("Com duas classes b\xE1sicas - configura\xE7\xE3o e modelo - e um preprocessamento de classe adicional (tokenizer, extrator de features, ou processador), voc\xEA pode criar qualquer modelo que suportado por \u{1F917} Transformers. Qualquer uma dessas classes base s\xE3o configur\xE1veis, te permitindo usar os atributos espec\xEDficos que voc\xEA queira. Voc\xEA pode facilmente preparar um modelo para treinamento ou modificar um modelo pr\xE9-treinado com poucas mudan\xE7as."),this.h()},l(e){const i=Mn('[data-svelte="svelte-1phssyn"]',document.head);p=l(i,"META",{name:!0,content:!0}),i.forEach(s),b=f(e),d=l(e,"H1",{class:!0});var pa=n(d);v=l(pa,"A",{id:!0,class:!0,href:!0});var gs=n(v);_=l(gs,"SPAN",{});var _s=n(_);j($.$$.fragment,_s),_s.forEach(s),gs.forEach(s),g=f(pa),T=l(pa,"SPAN",{});var ys=n(T);E=t(ys,"Criar uma arquitetura customizada"),ys.forEach(s),pa.forEach(s),B=f(e),Z=l(e,"P",{});var H=n(Z);F=t(H,"Uma "),J=l(H,"A",{href:!0});var Es=n(J);x=l(Es,"CODE",{});var ll=n(x);V=t(ll,"AutoClass"),ll.forEach(s),Es.forEach(s),U=t(H," automaticamente infere a arquitetura do modelo e baixa configura\xE7\xF5es e pesos pr\xE9-treinados. Geralmente, n\xF3s recomendamos usar uma "),h=l(H,"CODE",{});var nl=n(h);R=t(nl,"AutoClass"),nl.forEach(s),N=t(H," para produzir um c\xF3digo independente de checkpoints. Mas usu\xE1rios que querem mais contole sobre par\xE2metros espec\xEDficos do modelo pode criar um modelo customizado \u{1F917} Transformers a partir de algumas classes bases. Isso pode ser particulamente \xFAtil para algu\xE9m que est\xE1 interessado em estudar, treinar ou fazer experimentos com um modelo \u{1F917} Transformers. Nesse tutorial, ser\xE1 explicado como criar um modelo customizado sem uma "),W=l(H,"CODE",{});var il=n(W);P=t(il,"AutoClass"),il.forEach(s),u=t(H,". Aprenda como:"),H.forEach(s),C=f(e),D=l(e,"UL",{});var ae=n(D);A=l(ae,"LI",{});var ml=n(A);se=t(ml,"Carregar e customizar a configura\xE7\xE3o de um modelo."),ml.forEach(s),oe=f(ae),ka=l(ae,"LI",{});var pl=n(ka);Ao=t(pl,"Criar a arquitetura de um modelo."),pl.forEach(s),Io=f(ae),za=l(ae,"LI",{});var dl=n(za);So=t(dl,"Criar um tokenizer r\xE1pido e devagar para textos."),dl.forEach(s),Oo=f(ae),wa=l(ae,"LI",{});var ul=n(wa);Ho=t(ul,"Criar extrator de features para tarefas envolvendo audio e imagem."),ul.forEach(s),Lo=f(ae),Ma=l(ae,"LI",{});var cl=n(Ma);Ko=t(cl,"Criar um processador para tarefas multimodais."),cl.forEach(s),ae.forEach(s),js=f(e),te=l(e,"H2",{class:!0});var Eo=n(te);de=l(Eo,"A",{id:!0,class:!0,href:!0});var fl=n(de);Za=l(fl,"SPAN",{});var hl=n(Za);j(Fe.$$.fragment,hl),hl.forEach(s),fl.forEach(s),et=f(Eo),Ta=l(Eo,"SPAN",{});var vl=n(Ta);at=t(vl,"configuration"),vl.forEach(s),Eo.forEach(s),ks=f(e),Q=l(e,"P",{});var O=n(Q);st=t(O,"A "),ca=l(O,"A",{href:!0});var bl=n(ca);ot=t(bl,"configuration"),bl.forEach(s),tt=t(O," refere-se a atributos espec\xEDficos de um modelo. Cada configura\xE7\xE3o de modelo tem atributos diferentes; por exemplo, todos modelo de PLN possuem os atributos "),Va=l(O,"CODE",{});var $l=n(Va);rt=t($l,"hidden_size"),$l.forEach(s),lt=t(O,", "),Ca=l(O,"CODE",{});var gl=n(Ca);nt=t(gl,"num_attention_heads"),gl.forEach(s),it=t(O,", "),Ra=l(O,"CODE",{});var _l=n(Ra);mt=t(_l,"num_hidden_layers"),_l.forEach(s),pt=t(O," e "),Ja=l(O,"CODE",{});var yl=n(Ja);dt=t(yl,"vocab_size"),yl.forEach(s),ut=t(O," em comum. Esse atributos especificam o numero de \u2018attention heads\u2019 ou \u2018hidden layers\u2019 para construir um modelo."),O.forEach(s),zs=f(e),L=l(e,"P",{});var qa=n(L);ct=t(qa,"D\xEA uma olhada a mais em "),fa=l(qa,"A",{href:!0});var El=n(fa);ft=t(El,"DistilBERT"),El.forEach(s),ht=t(qa," acessando "),Wa=l(qa,"CODE",{});var ql=n(Wa);vt=t(ql,"DistilBertConfig"),ql.forEach(s),bt=t(qa," para observar esses atributos:"),qa.forEach(s),ws=f(e),j(Ge.$$.fragment,e),Ms=f(e),re=l(e,"P",{});var qs=n(re);xa=l(qs,"CODE",{});var jl=n(xa);$t=t(jl,"DistilBertConfig"),jl.forEach(s),gt=t(qs," mostra todos os atributos padr\xF5es usados para construir um "),Ua=l(qs,"CODE",{});var kl=n(Ua);_t=t(kl,"DistilBertModel"),kl.forEach(s),yt=t(qs," base. Todos atributos s\xE3o customiz\xE1veis, o que cria espa\xE7o para experimentos. Por exemplo, voc\xEA pode customizar um modelo padr\xE3o para:"),qs.forEach(s),Zs=f(e),ue=l(e,"UL",{});var qo=n(ue);Be=l(qo,"LI",{});var jo=n(Be);Et=t(jo,"Tentar uma fun\xE7\xE3o de ativa\xE7\xE3o diferente com o par\xE2metro "),Fa=l(jo,"CODE",{});var zl=n(Fa);qt=t(zl,"activation"),zl.forEach(s),jt=t(jo,"."),jo.forEach(s),kt=f(qo),Xe=l(qo,"LI",{});var ko=n(Xe);zt=t(ko,"Usar uma taxa de desist\xEAncia maior para as probabilidades de \u2018attention\u2019 com o par\xE2metro "),Ga=l(ko,"CODE",{});var wl=n(Ga);wt=t(wl,"attention_dropout"),wl.forEach(s),Mt=t(ko,"."),ko.forEach(s),qo.forEach(s),Ts=f(e),j(De.$$.fragment,e),Vs=f(e),ce=l(e,"P",{});var zo=n(ce);Zt=t(zo,"Atributos de um modelo pr\xE9-treinado podem ser modificados na fun\xE7\xE3o "),Ba=l(zo,"CODE",{});var Ml=n(Ba);Tt=t(Ml,"from_pretrained()"),Ml.forEach(s),Vt=t(zo,":"),zo.forEach(s),Cs=f(e),j(Ne.$$.fragment,e),Rs=f(e),fe=l(e,"P",{});var wo=n(fe);Ct=t(wo,"Uma vez que voc\xEA est\xE1 satisfeito com as configura\xE7\xF5es do seu modelo, voc\xEA consegue salvar elas com "),Xa=l(wo,"CODE",{});var Zl=n(Xa);Rt=t(Zl,"save_pretrained()"),Zl.forEach(s),Jt=t(wo,". Seu arquivo de configura\xE7\xF5es est\xE1 salvo como um arquivo JSON no diret\xF3rio especificado:"),wo.forEach(s),Js=f(e),j(Pe.$$.fragment,e),Ws=f(e),he=l(e,"P",{});var Mo=n(he);Wt=t(Mo,"Para reusar o arquivo de configura\xE7\xF5es, carregue com "),Da=l(Mo,"CODE",{});var Tl=n(Da);xt=t(Tl,"from_pretrained()"),Tl.forEach(s),Ut=t(Mo,":"),Mo.forEach(s),xs=f(e),j(Ye.$$.fragment,e),Us=f(e),j(ve.$$.fragment,e),Fs=f(e),le=l(e,"H2",{class:!0});var Zo=n(le);be=l(Zo,"A",{id:!0,class:!0,href:!0});var Vl=n(be);Na=l(Vl,"SPAN",{});var Cl=n(Na);j(Qe.$$.fragment,Cl),Cl.forEach(s),Vl.forEach(s),Ft=f(Zo),Pa=l(Zo,"SPAN",{});var Rl=n(Pa);Gt=t(Rl,"Modelo"),Rl.forEach(s),Zo.forEach(s),Gs=f(e),Y=l(e,"P",{});var I=n(Y);Bt=t(I,"O pr\xF3ximo passo \xE9 criar um "),ha=l(I,"A",{href:!0});var Jl=n(ha);Xt=t(Jl,"model"),Jl.forEach(s),Dt=t(I,". O modelo - tamb\xE9m vagamente referido como arquitetura - define o que cada camada est\xE1 fazendo e quais opera\xE7\xF5es est\xE3o acontecendo. Atributos como "),Ya=l(I,"CODE",{});var Wl=n(Ya);Nt=t(Wl,"num_hidden_layers"),Wl.forEach(s),Pt=t(I," das configura\xE7\xF5es s\xE3o utilizados para definir a arquitetura. Todo modelo compartilha a classe base "),Qa=l(I,"CODE",{});var xl=n(Qa);Yt=t(xl,"PreTrainedModel"),xl.forEach(s),Qt=t(I," e alguns m\xE9todos em comum como redimensionar o tamanho dos embeddings de entrada e podar as \u2018self-attention heads\u2019. Al\xE9m disso, todos os modelos tamb\xE9m s\xE3o subclasses de "),Ae=l(I,"A",{href:!0,rel:!0});var Ul=n(Ae);Aa=l(Ul,"CODE",{});var Fl=n(Aa);At=t(Fl,"torch.nn.Module"),Fl.forEach(s),Ul.forEach(s),It=t(I,", "),Ie=l(I,"A",{href:!0,rel:!0});var Gl=n(Ie);Ia=l(Gl,"CODE",{});var Bl=n(Ia);St=t(Bl,"tf.keras.Model"),Bl.forEach(s),Gl.forEach(s),Ot=t(I," ou "),Se=l(I,"A",{href:!0,rel:!0});var Xl=n(Se);Sa=l(Xl,"CODE",{});var Dl=n(Sa);Ht=t(Dl,"flax.linen.Module"),Dl.forEach(s),Xl.forEach(s),Lt=t(I,". Isso significa que os modelos s\xE3o compat\xEDveis com cada respectivo uso de framework."),I.forEach(s),Bs=f(e),j($e.$$.fragment,e),Xs=f(e),ne=l(e,"H3",{class:!0});var To=n(ne);ge=l(To,"A",{id:!0,class:!0,href:!0});var Nl=n(ge);Oa=l(Nl,"SPAN",{});var Pl=n(Oa);j(Oe.$$.fragment,Pl),Pl.forEach(s),Nl.forEach(s),Kt=f(To),Ha=l(To,"SPAN",{});var Yl=n(Ha);er=t(Yl,"Heads do modelo"),Yl.forEach(s),To.forEach(s),Ds=f(e),_e=l(e,"P",{});var Vo=n(_e);ar=t(Vo,"Neste ponto, voc\xEA tem um modelo b\xE1sico do DistilBERT que gera os "),La=l(Vo,"EM",{});var Ql=n(La);sr=t(Ql,"estados ocultos"),Ql.forEach(s),or=t(Vo,". Os estados ocultos s\xE3o passados como entrada para a head do moelo para produzir a sa\xEDda final. \u{1F917} Transformers fornece uma head de modelo diferente para cada tarefa desde que o modelo suporte essa tarefa (por exemplo, voc\xEA n\xE3o consegue utilizar o modelo DistilBERT para uma tarefa de \u2018sequence-to-sequence\u2019 como tradu\xE7\xE3o)."),Vo.forEach(s),Ns=f(e),j(ye.$$.fragment,e),Ps=f(e),ie=l(e,"H2",{class:!0});var Co=n(ie);Ee=l(Co,"A",{id:!0,class:!0,href:!0});var Al=n(Ee);Ka=l(Al,"SPAN",{});var Il=n(Ka);j(He.$$.fragment,Il),Il.forEach(s),Al.forEach(s),tr=f(Co),es=l(Co,"SPAN",{});var Sl=n(es);rr=t(Sl,"Tokenizer"),Sl.forEach(s),Co.forEach(s),Ys=f(e),qe=l(e,"P",{});var Ro=n(qe);lr=t(Ro,"A \xFAtlima classe base que voc\xEA precisa antes de usar um modelo para dados textuais \xE9 a "),va=l(Ro,"A",{href:!0});var Ol=n(va);nr=t(Ol,"tokenizer"),Ol.forEach(s),ir=t(Ro," para converter textos originais para tensores. Existem dois tipos de tokenizers que voc\xEA pode usar com \u{1F917} Transformers:"),Ro.forEach(s),Qs=f(e),je=l(e,"UL",{});var Jo=n(je);ba=l(Jo,"LI",{});var rl=n(ba);as=l(rl,"CODE",{});var Hl=n(as);mr=t(Hl,"PreTrainedTokenizer"),Hl.forEach(s),pr=t(rl,": uma implementa\xE7\xE3o em Python de um tokenizer."),rl.forEach(s),dr=f(Jo),K=l(Jo,"LI",{});var da=n(K);ss=l(da,"CODE",{});var Ll=n(ss);ur=t(Ll,"PreTrainedTokenizerFast"),Ll.forEach(s),cr=t(da,": um tokenizer da nossa biblioteca "),Le=l(da,"A",{href:!0,rel:!0});var Kl=n(Le);fr=t(Kl,"\u{1F917} Tokenizer"),Kl.forEach(s),hr=t(da," baseada em Rust. Esse tipo de tokenizer \xE9 significantemente mais rapido - especialmente durante tokenization de codifica\xE7\xE3o - devido a implementa\xE7\xE3o em Rust. O tokenizer r\xE1pido tambem oferece m\xE9todos adicionais como "),os=l(da,"EM",{});var en=n(os);vr=t(en,"offset mapping"),en.forEach(s),br=t(da," que mapeia tokens para suar palavras ou caracteres originais."),da.forEach(s),Jo.forEach(s),As=f(e),$a=l(e,"P",{});var an=n($a);$r=t(an,"Os dois tokenizers suporta m\xE9todos comuns como os de codificar e decodificar, adicionar novos tokens, e gerenciar tokens especiais."),an.forEach(s),Is=f(e),j(ke.$$.fragment,e),Ss=f(e),ze=l(e,"P",{});var Wo=n(ze);gr=t(Wo,"Se voc\xEA treinou seu pr\xF3rpio tokenizer, voc\xEA pode criar um a partir do seu arquivo "),ts=l(Wo,"EM",{});var sn=n(ts);_r=t(sn,"vocabulary"),sn.forEach(s),yr=t(Wo,":"),Wo.forEach(s),Os=f(e),j(Ke.$$.fragment,e),Hs=f(e),we=l(e,"P",{});var xo=n(we);Er=t(xo,"\xC9 importante lembrar que o vocabul\xE1rio de um tokenizer customizado ser\xE1 diferente de um vocabul\xE1rio gerado pelo tokenizer de um modelo pr\xE9 treinado. Voc\xEA precisa usar o vocabul\xE1rio de um modelo pr\xE9 treinado se voc\xEA estiver usando um modelo pr\xE9 treinado, caso contr\xE1rio as entradas n\xE3o far\xE3o sentido. Criando um tokenizer com um vocabul\xE1rio de um modelo pr\xE9 treinado com a classe "),rs=l(xo,"CODE",{});var on=n(rs);qr=t(on,"DistilBertTokenizer"),on.forEach(s),jr=t(xo,":"),xo.forEach(s),Ls=f(e),j(ea.$$.fragment,e),Ks=f(e),Me=l(e,"P",{});var Uo=n(Me);kr=t(Uo,"Criando um \u2018fast tokenizer\u2019 com a classe "),ls=l(Uo,"CODE",{});var tn=n(ls);zr=t(tn,"DistilBertTokenizerFast"),tn.forEach(s),wr=t(Uo,":"),Uo.forEach(s),eo=f(e),j(aa.$$.fragment,e),ao=f(e),j(Ze.$$.fragment,e),so=f(e),me=l(e,"H2",{class:!0});var Fo=n(me);Te=l(Fo,"A",{id:!0,class:!0,href:!0});var rn=n(Te);ns=l(rn,"SPAN",{});var ln=n(ns);j(sa.$$.fragment,ln),ln.forEach(s),rn.forEach(s),Mr=f(Fo),is=l(Fo,"SPAN",{});var nn=n(is);Zr=t(nn,"Extrator de features"),nn.forEach(s),Fo.forEach(s),oo=f(e),S=l(e,"P",{});var Ue=n(S);Tr=t(Ue,"Um extrator de features processa entradas de imagem ou \xE1udio. Ele herda da classe base "),ms=l(Ue,"CODE",{});var mn=n(ms);Vr=t(mn,"FeatureExtractionMixin"),mn.forEach(s),Cr=t(Ue,", e pode tamb\xE9m herdar da classe "),ps=l(Ue,"CODE",{});var pn=n(ps);Rr=t(pn,"ImageFeatureExtractionMixin"),pn.forEach(s),Jr=t(Ue," para processamento de features de imagem ou da classe "),ds=l(Ue,"CODE",{});var dn=n(ds);Wr=t(dn,"SequenceFeatureExtractor"),dn.forEach(s),xr=t(Ue," para processamento de entradas de \xE1udio."),Ue.forEach(s),to=f(e),ee=l(e,"P",{});var ja=n(ee);Ur=t(ja,"Dependendo do que voc\xEA est\xE1 trabalhando em um audio ou uma tarefa de vis\xE3o, crie um estrator de features associado com o modelo que voc\xEA est\xE1 usando. Por exemplo, crie um "),us=l(ja,"CODE",{});var un=n(us);Fr=t(un,"ViTFeatureExtractor"),un.forEach(s),Gr=t(ja," padr\xE3o se voc\xEA estiver usando "),ga=l(ja,"A",{href:!0});var cn=n(ga);Br=t(cn,"ViT"),cn.forEach(s),Xr=t(ja," para classifica\xE7\xE3o de imagens:"),ja.forEach(s),ro=f(e),j(oa.$$.fragment,e),lo=f(e),j(Ve.$$.fragment,e),no=f(e),Ce=l(e,"P",{});var Go=n(Ce);Dr=t(Go,"Modifique qualquer par\xE2metro dentre os "),cs=l(Go,"CODE",{});var fn=n(cs);Nr=t(fn,"ViTFeatureExtractor"),fn.forEach(s),Pr=t(Go," para criar seu extrator de features customizado."),Go.forEach(s),io=f(e),j(ta.$$.fragment,e),mo=f(e),Re=l(e,"P",{});var Bo=n(Re);Yr=t(Bo,"Para entradas de \xE1utio, voc\xEA pode criar um "),fs=l(Bo,"CODE",{});var hn=n(fs);Qr=t(hn,"Wav2Vec2FeatureExtractor"),hn.forEach(s),Ar=t(Bo," e customizar os par\xE2metros de uma forma similar:"),Bo.forEach(s),po=f(e),j(ra.$$.fragment,e),uo=f(e),pe=l(e,"H2",{class:!0});var Xo=n(pe);Je=l(Xo,"A",{id:!0,class:!0,href:!0});var vn=n(Je);hs=l(vn,"SPAN",{});var bn=n(hs);j(la.$$.fragment,bn),bn.forEach(s),vn.forEach(s),Ir=f(Xo),vs=l(Xo,"SPAN",{});var $n=n(vs);Sr=t($n,"Processor"),$n.forEach(s),Xo.forEach(s),co=f(e),We=l(e,"P",{});var Do=n(We);Or=t(Do,"Para modelos que suportam tarefas multimodais, \u{1F917} Transformers oferece uma classe processadora que convenientemente cobre um extrator de features e tokenizer dentro de um \xFAnico objeto. Por exemplo, vamos usar o "),bs=l(Do,"CODE",{});var gn=n(bs);Hr=t(gn,"Wav2Vec2Processor"),gn.forEach(s),Lr=t(Do," para uma tarefa de reconhecimento de fala autom\xE1tica (ASR). ASR transcreve \xE1udio para texto, ent\xE3o voc\xEA ir\xE1 precisar de um extrator de um features e um tokenizer."),Do.forEach(s),fo=f(e),_a=l(e,"P",{});var _n=n(_a);Kr=t(_n,"Crie um extrator de features para lidar com as entradas de \xE1udio."),_n.forEach(s),ho=f(e),j(na.$$.fragment,e),vo=f(e),ya=l(e,"P",{});var yn=n(ya);el=t(yn,"Crie um tokenizer para lidar com a entrada de textos:"),yn.forEach(s),bo=f(e),j(ia.$$.fragment,e),$o=f(e),xe=l(e,"P",{});var No=n(xe);al=t(No,"Combine o extrator de features e o tokenizer no "),$s=l(No,"CODE",{});var En=n($s);sl=t(En,"Wav2Vec2Processor"),En.forEach(s),ol=t(No,":"),No.forEach(s),go=f(e),j(ma.$$.fragment,e),_o=f(e),Ea=l(e,"P",{});var qn=n(Ea);tl=t(qn,"Com duas classes b\xE1sicas - configura\xE7\xE3o e modelo - e um preprocessamento de classe adicional (tokenizer, extrator de features, ou processador), voc\xEA pode criar qualquer modelo que suportado por \u{1F917} Transformers. Qualquer uma dessas classes base s\xE3o configur\xE1veis, te permitindo usar os atributos espec\xEDficos que voc\xEA queira. Voc\xEA pode facilmente preparar um modelo para treinamento ou modificar um modelo pr\xE9-treinado com poucas mudan\xE7as."),qn.forEach(s),this.h()},h(){y(p,"name","hf:doc:metadata"),y(p,"content",JSON.stringify(Nn)),y(v,"id","criar-uma-arquitetura-customizada"),y(v,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(v,"href","#criar-uma-arquitetura-customizada"),y(d,"class","relative group"),y(J,"href","model_doc/auto"),y(de,"id","configuration"),y(de,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(de,"href","#configuration"),y(te,"class","relative group"),y(ca,"href","main_classes/configuration"),y(fa,"href","model_doc/distilbert"),y(be,"id","modelo"),y(be,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(be,"href","#modelo"),y(le,"class","relative group"),y(ha,"href","main_classes/models"),y(Ae,"href","https://pytorch.org/docs/stable/generated/torch.nn.Module.html"),y(Ae,"rel","nofollow"),y(Ie,"href","https://www.tensorflow.org/api_docs/python/tf/keras/Model"),y(Ie,"rel","nofollow"),y(Se,"href","https://flax.readthedocs.io/en/latest/flax.linen.html#module"),y(Se,"rel","nofollow"),y(ge,"id","heads-do-modelo"),y(ge,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(ge,"href","#heads-do-modelo"),y(ne,"class","relative group"),y(Ee,"id","tokenizer"),y(Ee,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(Ee,"href","#tokenizer"),y(ie,"class","relative group"),y(va,"href","main_classes/tokenizer"),y(Le,"href","https://huggingface.co/docs/tokenizers/python/latest/"),y(Le,"rel","nofollow"),y(Te,"id","extrator-de-features"),y(Te,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(Te,"href","#extrator-de-features"),y(me,"class","relative group"),y(ga,"href","model_doc/vit"),y(Je,"id","processor"),y(Je,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),y(Je,"href","#processor"),y(pe,"class","relative group")},m(e,i){a(document.head,p),m(e,b,i),m(e,d,i),a(d,v),a(v,_),k($,_,null),a(d,g),a(d,T),a(T,E),m(e,B,i),m(e,Z,i),a(Z,F),a(Z,J),a(J,x),a(x,V),a(Z,U),a(Z,h),a(h,R),a(Z,N),a(Z,W),a(W,P),a(Z,u),m(e,C,i),m(e,D,i),a(D,A),a(A,se),a(D,oe),a(D,ka),a(ka,Ao),a(D,Io),a(D,za),a(za,So),a(D,Oo),a(D,wa),a(wa,Ho),a(D,Lo),a(D,Ma),a(Ma,Ko),m(e,js,i),m(e,te,i),a(te,de),a(de,Za),k(Fe,Za,null),a(te,et),a(te,Ta),a(Ta,at),m(e,ks,i),m(e,Q,i),a(Q,st),a(Q,ca),a(ca,ot),a(Q,tt),a(Q,Va),a(Va,rt),a(Q,lt),a(Q,Ca),a(Ca,nt),a(Q,it),a(Q,Ra),a(Ra,mt),a(Q,pt),a(Q,Ja),a(Ja,dt),a(Q,ut),m(e,zs,i),m(e,L,i),a(L,ct),a(L,fa),a(fa,ft),a(L,ht),a(L,Wa),a(Wa,vt),a(L,bt),m(e,ws,i),k(Ge,e,i),m(e,Ms,i),m(e,re,i),a(re,xa),a(xa,$t),a(re,gt),a(re,Ua),a(Ua,_t),a(re,yt),m(e,Zs,i),m(e,ue,i),a(ue,Be),a(Be,Et),a(Be,Fa),a(Fa,qt),a(Be,jt),a(ue,kt),a(ue,Xe),a(Xe,zt),a(Xe,Ga),a(Ga,wt),a(Xe,Mt),m(e,Ts,i),k(De,e,i),m(e,Vs,i),m(e,ce,i),a(ce,Zt),a(ce,Ba),a(Ba,Tt),a(ce,Vt),m(e,Cs,i),k(Ne,e,i),m(e,Rs,i),m(e,fe,i),a(fe,Ct),a(fe,Xa),a(Xa,Rt),a(fe,Jt),m(e,Js,i),k(Pe,e,i),m(e,Ws,i),m(e,he,i),a(he,Wt),a(he,Da),a(Da,xt),a(he,Ut),m(e,xs,i),k(Ye,e,i),m(e,Us,i),k(ve,e,i),m(e,Fs,i),m(e,le,i),a(le,be),a(be,Na),k(Qe,Na,null),a(le,Ft),a(le,Pa),a(Pa,Gt),m(e,Gs,i),m(e,Y,i),a(Y,Bt),a(Y,ha),a(ha,Xt),a(Y,Dt),a(Y,Ya),a(Ya,Nt),a(Y,Pt),a(Y,Qa),a(Qa,Yt),a(Y,Qt),a(Y,Ae),a(Ae,Aa),a(Aa,At),a(Y,It),a(Y,Ie),a(Ie,Ia),a(Ia,St),a(Y,Ot),a(Y,Se),a(Se,Sa),a(Sa,Ht),a(Y,Lt),m(e,Bs,i),k($e,e,i),m(e,Xs,i),m(e,ne,i),a(ne,ge),a(ge,Oa),k(Oe,Oa,null),a(ne,Kt),a(ne,Ha),a(Ha,er),m(e,Ds,i),m(e,_e,i),a(_e,ar),a(_e,La),a(La,sr),a(_e,or),m(e,Ns,i),k(ye,e,i),m(e,Ps,i),m(e,ie,i),a(ie,Ee),a(Ee,Ka),k(He,Ka,null),a(ie,tr),a(ie,es),a(es,rr),m(e,Ys,i),m(e,qe,i),a(qe,lr),a(qe,va),a(va,nr),a(qe,ir),m(e,Qs,i),m(e,je,i),a(je,ba),a(ba,as),a(as,mr),a(ba,pr),a(je,dr),a(je,K),a(K,ss),a(ss,ur),a(K,cr),a(K,Le),a(Le,fr),a(K,hr),a(K,os),a(os,vr),a(K,br),m(e,As,i),m(e,$a,i),a($a,$r),m(e,Is,i),k(ke,e,i),m(e,Ss,i),m(e,ze,i),a(ze,gr),a(ze,ts),a(ts,_r),a(ze,yr),m(e,Os,i),k(Ke,e,i),m(e,Hs,i),m(e,we,i),a(we,Er),a(we,rs),a(rs,qr),a(we,jr),m(e,Ls,i),k(ea,e,i),m(e,Ks,i),m(e,Me,i),a(Me,kr),a(Me,ls),a(ls,zr),a(Me,wr),m(e,eo,i),k(aa,e,i),m(e,ao,i),k(Ze,e,i),m(e,so,i),m(e,me,i),a(me,Te),a(Te,ns),k(sa,ns,null),a(me,Mr),a(me,is),a(is,Zr),m(e,oo,i),m(e,S,i),a(S,Tr),a(S,ms),a(ms,Vr),a(S,Cr),a(S,ps),a(ps,Rr),a(S,Jr),a(S,ds),a(ds,Wr),a(S,xr),m(e,to,i),m(e,ee,i),a(ee,Ur),a(ee,us),a(us,Fr),a(ee,Gr),a(ee,ga),a(ga,Br),a(ee,Xr),m(e,ro,i),k(oa,e,i),m(e,lo,i),k(Ve,e,i),m(e,no,i),m(e,Ce,i),a(Ce,Dr),a(Ce,cs),a(cs,Nr),a(Ce,Pr),m(e,io,i),k(ta,e,i),m(e,mo,i),m(e,Re,i),a(Re,Yr),a(Re,fs),a(fs,Qr),a(Re,Ar),m(e,po,i),k(ra,e,i),m(e,uo,i),m(e,pe,i),a(pe,Je),a(Je,hs),k(la,hs,null),a(pe,Ir),a(pe,vs),a(vs,Sr),m(e,co,i),m(e,We,i),a(We,Or),a(We,bs),a(bs,Hr),a(We,Lr),m(e,fo,i),m(e,_a,i),a(_a,Kr),m(e,ho,i),k(na,e,i),m(e,vo,i),m(e,ya,i),a(ya,el),m(e,bo,i),k(ia,e,i),m(e,$o,i),m(e,xe,i),a(xe,al),a(xe,$s),a($s,sl),a(xe,ol),m(e,go,i),k(ma,e,i),m(e,_o,i),m(e,Ea,i),a(Ea,tl),yo=!0},p(e,[i]){const pa={};i&2&&(pa.$$scope={dirty:i,ctx:e}),ve.$set(pa);const gs={};i&2&&(gs.$$scope={dirty:i,ctx:e}),$e.$set(gs);const _s={};i&2&&(_s.$$scope={dirty:i,ctx:e}),ye.$set(_s);const ys={};i&2&&(ys.$$scope={dirty:i,ctx:e}),ke.$set(ys);const H={};i&2&&(H.$$scope={dirty:i,ctx:e}),Ze.$set(H);const Es={};i&2&&(Es.$$scope={dirty:i,ctx:e}),Ve.$set(Es)},i(e){yo||(z($.$$.fragment,e),z(Fe.$$.fragment,e),z(Ge.$$.fragment,e),z(De.$$.fragment,e),z(Ne.$$.fragment,e),z(Pe.$$.fragment,e),z(Ye.$$.fragment,e),z(ve.$$.fragment,e),z(Qe.$$.fragment,e),z($e.$$.fragment,e),z(Oe.$$.fragment,e),z(ye.$$.fragment,e),z(He.$$.fragment,e),z(ke.$$.fragment,e),z(Ke.$$.fragment,e),z(ea.$$.fragment,e),z(aa.$$.fragment,e),z(Ze.$$.fragment,e),z(sa.$$.fragment,e),z(oa.$$.fragment,e),z(Ve.$$.fragment,e),z(ta.$$.fragment,e),z(ra.$$.fragment,e),z(la.$$.fragment,e),z(na.$$.fragment,e),z(ia.$$.fragment,e),z(ma.$$.fragment,e),yo=!0)},o(e){w($.$$.fragment,e),w(Fe.$$.fragment,e),w(Ge.$$.fragment,e),w(De.$$.fragment,e),w(Ne.$$.fragment,e),w(Pe.$$.fragment,e),w(Ye.$$.fragment,e),w(ve.$$.fragment,e),w(Qe.$$.fragment,e),w($e.$$.fragment,e),w(Oe.$$.fragment,e),w(ye.$$.fragment,e),w(He.$$.fragment,e),w(ke.$$.fragment,e),w(Ke.$$.fragment,e),w(ea.$$.fragment,e),w(aa.$$.fragment,e),w(Ze.$$.fragment,e),w(sa.$$.fragment,e),w(oa.$$.fragment,e),w(Ve.$$.fragment,e),w(ta.$$.fragment,e),w(ra.$$.fragment,e),w(la.$$.fragment,e),w(na.$$.fragment,e),w(ia.$$.fragment,e),w(ma.$$.fragment,e),yo=!1},d(e){s(p),e&&s(b),e&&s(d),M($),e&&s(B),e&&s(Z),e&&s(C),e&&s(D),e&&s(js),e&&s(te),M(Fe),e&&s(ks),e&&s(Q),e&&s(zs),e&&s(L),e&&s(ws),M(Ge,e),e&&s(Ms),e&&s(re),e&&s(Zs),e&&s(ue),e&&s(Ts),M(De,e),e&&s(Vs),e&&s(ce),e&&s(Cs),M(Ne,e),e&&s(Rs),e&&s(fe),e&&s(Js),M(Pe,e),e&&s(Ws),e&&s(he),e&&s(xs),M(Ye,e),e&&s(Us),M(ve,e),e&&s(Fs),e&&s(le),M(Qe),e&&s(Gs),e&&s(Y),e&&s(Bs),M($e,e),e&&s(Xs),e&&s(ne),M(Oe),e&&s(Ds),e&&s(_e),e&&s(Ns),M(ye,e),e&&s(Ps),e&&s(ie),M(He),e&&s(Ys),e&&s(qe),e&&s(Qs),e&&s(je),e&&s(As),e&&s($a),e&&s(Is),M(ke,e),e&&s(Ss),e&&s(ze),e&&s(Os),M(Ke,e),e&&s(Hs),e&&s(we),e&&s(Ls),M(ea,e),e&&s(Ks),e&&s(Me),e&&s(eo),M(aa,e),e&&s(ao),M(Ze,e),e&&s(so),e&&s(me),M(sa),e&&s(oo),e&&s(S),e&&s(to),e&&s(ee),e&&s(ro),M(oa,e),e&&s(lo),M(Ve,e),e&&s(no),e&&s(Ce),e&&s(io),M(ta,e),e&&s(mo),e&&s(Re),e&&s(po),M(ra,e),e&&s(uo),e&&s(pe),M(la),e&&s(co),e&&s(We),e&&s(fo),e&&s(_a),e&&s(ho),M(na,e),e&&s(vo),e&&s(ya),e&&s(bo),M(ia,e),e&&s($o),e&&s(xe),e&&s(go),M(ma,e),e&&s(_o),e&&s(Ea)}}}const Nn={local:"criar-uma-arquitetura-customizada",sections:[{local:"configuration",title:"configuration"},{local:"modelo",sections:[{local:"heads-do-modelo",title:"Heads do modelo"}],title:"Modelo"},{local:"tokenizer",title:"Tokenizer"},{local:"extrator-de-features",title:"Extrator de features"},{local:"processor",title:"Processor"}],title:"Criar uma arquitetura customizada"};function Pn(G){return Zn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class On extends kn{constructor(p){super();zn(this,p,Pn,Dn,wn,{})}}export{On as default,Nn as metadata};
