import{S as jr,i as kr,s as qr,e as i,k as m,w as E,t as s,M as wr,c as o,d as a,m as f,a as r,x as j,h as l,b as _,G as t,g as p,y as k,q,o as w,B as M,v as Mr,L as Ys}from"../chunks/vendor-hf-doc-builder.js";import{T as Qs}from"../chunks/Tip-hf-doc-builder.js";import{I as dt}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as D}from"../chunks/CodeBlock-hf-doc-builder.js";import{F as Er,M as Ns}from"../chunks/Markdown-hf-doc-builder.js";import"../chunks/IconTensorflow-hf-doc-builder.js";function Zr(B){let c,v,u,g,b;return{c(){c=i("p"),v=s("Puoi anche salvare il file di configurazione come dizionario oppure come la differenza tra gli attributi della tua configurazione personalizzata e gli attributi della configurazione predefinita! Guarda la documentazione "),u=i("a"),g=s("configuration"),b=s(" per pi\xF9 dettagli."),this.h()},l($){c=o($,"P",{});var z=r(c);v=l(z,"Puoi anche salvare il file di configurazione come dizionario oppure come la differenza tra gli attributi della tua configurazione personalizzata e gli attributi della configurazione predefinita! Guarda la documentazione "),u=o(z,"A",{href:!0});var C=r(u);g=l(C,"configuration"),C.forEach(a),b=l(z," per pi\xF9 dettagli."),z.forEach(a),this.h()},h(){_(u,"href","main_classes/configuration")},m($,z){p($,c,z),t(c,v),t(c,u),t(u,g),t(c,b)},d($){$&&a(c)}}}function Cr(B){let c,v,u,g,b,$,z,C,y,X,Z,G,V,U,R,F,h,J,Q,W,Y;return g=new D({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)`}}),R=new D({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 D({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(){c=i("p"),v=s("Carica gli attributi della tua configurazione personalizzata nel modello:"),u=m(),E(g.$$.fragment),b=m(),$=i("p"),z=s("Questo crea modelli con valori casuali invece di pesi pre-allenati. Non sarai in grado di usare questo modello per niente di utile finch\xE9 non lo alleni. L\u2019allenamento \xE8 un processo costoso e che richiede tempo . Generalmente \xE8 meglio usare un modello pre-allenato per ottenere risultati migliori velocemente, utilizzando solo una frazione delle risorse neccesarie per l\u2019allenamento."),C=m(),y=i("p"),X=s("Crea un modello pre-allenato con "),Z=i("code"),G=s("from_pretrained()"),V=s(":"),U=m(),E(R.$$.fragment),F=m(),h=i("p"),J=s("Quando carichi pesi pre-allenati, la configurazione del modello predefinito \xE8 automaticamente caricata se il modello \xE8 fornito da \u{1F917} Transformers. Tuttavia, puoi ancora sostituire gli attributi - alcuni o tutti - di configurazione del modello predefinito con i tuoi se lo desideri:"),Q=m(),E(W.$$.fragment)},l(d){c=o(d,"P",{});var T=r(c);v=l(T,"Carica gli attributi della tua configurazione personalizzata nel modello:"),T.forEach(a),u=f(d),j(g.$$.fragment,d),b=f(d),$=o(d,"P",{});var P=r($);z=l(P,"Questo crea modelli con valori casuali invece di pesi pre-allenati. Non sarai in grado di usare questo modello per niente di utile finch\xE9 non lo alleni. L\u2019allenamento \xE8 un processo costoso e che richiede tempo . Generalmente \xE8 meglio usare un modello pre-allenato per ottenere risultati migliori velocemente, utilizzando solo una frazione delle risorse neccesarie per l\u2019allenamento."),P.forEach(a),C=f(d),y=o(d,"P",{});var x=r(y);X=l(x,"Crea un modello pre-allenato con "),Z=o(x,"CODE",{});var ae=r(Z);G=l(ae,"from_pretrained()"),ae.forEach(a),V=l(x,":"),x.forEach(a),U=f(d),j(R.$$.fragment,d),F=f(d),h=o(d,"P",{});var se=r(h);J=l(se,"Quando carichi pesi pre-allenati, la configurazione del modello predefinito \xE8 automaticamente caricata se il modello \xE8 fornito da \u{1F917} Transformers. Tuttavia, puoi ancora sostituire gli attributi - alcuni o tutti - di configurazione del modello predefinito con i tuoi se lo desideri:"),se.forEach(a),Q=f(d),j(W.$$.fragment,d)},m(d,T){p(d,c,T),t(c,v),p(d,u,T),k(g,d,T),p(d,b,T),p(d,$,T),t($,z),p(d,C,T),p(d,y,T),t(y,X),t(y,Z),t(Z,G),t(y,V),p(d,U,T),k(R,d,T),p(d,F,T),p(d,h,T),t(h,J),p(d,Q,T),k(W,d,T),Y=!0},p:Ys,i(d){Y||(q(g.$$.fragment,d),q(R.$$.fragment,d),q(W.$$.fragment,d),Y=!0)},o(d){w(g.$$.fragment,d),w(R.$$.fragment,d),w(W.$$.fragment,d),Y=!1},d(d){d&&a(c),d&&a(u),M(g,d),d&&a(b),d&&a($),d&&a(C),d&&a(y),d&&a(U),M(R,d),d&&a(F),d&&a(h),d&&a(Q),M(W,d)}}}function Rr(B){let c,v;return c=new Ns({props:{$$slots:{default:[Cr]},$$scope:{ctx:B}}}),{c(){E(c.$$.fragment)},l(u){j(c.$$.fragment,u)},m(u,g){k(c,u,g),v=!0},p(u,g){const b={};g&2&&(b.$$scope={dirty:g,ctx:u}),c.$set(b)},i(u){v||(q(c.$$.fragment,u),v=!0)},o(u){w(c.$$.fragment,u),v=!1},d(u){M(c,u)}}}function Tr(B){let c,v,u,g,b,$,z,C,y,X,Z,G,V,U,R,F,h,J,Q,W,Y;return g=new D({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)`}}),R=new D({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 D({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(){c=i("p"),v=s("Carica gli attributi di configurazione personalizzati nel modello:"),u=m(),E(g.$$.fragment),b=m(),$=i("p"),z=s("Questo crea modelli con valori casuali invece di pesi pre-allenati. Non sarai in grado di usare questo modello per niente di utile finch\xE9 non lo alleni. L\u2019allenamento \xE8 un processo costoso e che richiede tempo . Generalmente \xE8 meglio usare un modello pre-allenato per ottenere risultati migliori velocemente, utilizzando solo una frazione delle risorse neccesarie per l\u2019allenamento."),C=m(),y=i("p"),X=s("Crea un modello pre-allenoto con "),Z=i("code"),G=s("from_pretrained()"),V=s(":"),U=m(),E(R.$$.fragment),F=m(),h=i("p"),J=s("Quando carichi pesi pre-allenati, la configurazione del modello predefinito \xE8 automaticamente caricato se il modello \xE8 fornito da \u{1F917} Transformers. Tuttavia, puoi ancora sostituire gli attributi - alcuni o tutti - di configurazione del modello predefinito con i tuoi se lo desideri:"),Q=m(),E(W.$$.fragment)},l(d){c=o(d,"P",{});var T=r(c);v=l(T,"Carica gli attributi di configurazione personalizzati nel modello:"),T.forEach(a),u=f(d),j(g.$$.fragment,d),b=f(d),$=o(d,"P",{});var P=r($);z=l(P,"Questo crea modelli con valori casuali invece di pesi pre-allenati. Non sarai in grado di usare questo modello per niente di utile finch\xE9 non lo alleni. L\u2019allenamento \xE8 un processo costoso e che richiede tempo . Generalmente \xE8 meglio usare un modello pre-allenato per ottenere risultati migliori velocemente, utilizzando solo una frazione delle risorse neccesarie per l\u2019allenamento."),P.forEach(a),C=f(d),y=o(d,"P",{});var x=r(y);X=l(x,"Crea un modello pre-allenoto con "),Z=o(x,"CODE",{});var ae=r(Z);G=l(ae,"from_pretrained()"),ae.forEach(a),V=l(x,":"),x.forEach(a),U=f(d),j(R.$$.fragment,d),F=f(d),h=o(d,"P",{});var se=r(h);J=l(se,"Quando carichi pesi pre-allenati, la configurazione del modello predefinito \xE8 automaticamente caricato se il modello \xE8 fornito da \u{1F917} Transformers. Tuttavia, puoi ancora sostituire gli attributi - alcuni o tutti - di configurazione del modello predefinito con i tuoi se lo desideri:"),se.forEach(a),Q=f(d),j(W.$$.fragment,d)},m(d,T){p(d,c,T),t(c,v),p(d,u,T),k(g,d,T),p(d,b,T),p(d,$,T),t($,z),p(d,C,T),p(d,y,T),t(y,X),t(y,Z),t(Z,G),t(y,V),p(d,U,T),k(R,d,T),p(d,F,T),p(d,h,T),t(h,J),p(d,Q,T),k(W,d,T),Y=!0},p:Ys,i(d){Y||(q(g.$$.fragment,d),q(R.$$.fragment,d),q(W.$$.fragment,d),Y=!0)},o(d){w(g.$$.fragment,d),w(R.$$.fragment,d),w(W.$$.fragment,d),Y=!1},d(d){d&&a(c),d&&a(u),M(g,d),d&&a(b),d&&a($),d&&a(C),d&&a(y),d&&a(U),M(R,d),d&&a(F),d&&a(h),d&&a(Q),M(W,d)}}}function Jr(B){let c,v;return c=new Ns({props:{$$slots:{default:[Tr]},$$scope:{ctx:B}}}),{c(){E(c.$$.fragment)},l(u){j(c.$$.fragment,u)},m(u,g){k(c,u,g),v=!0},p(u,g){const b={};g&2&&(b.$$scope={dirty:g,ctx:u}),c.$set(b)},i(u){v||(q(c.$$.fragment,u),v=!0)},o(u){w(c.$$.fragment,u),v=!1},d(u){M(c,u)}}}function Vr(B){let c,v,u,g,b,$,z,C,y,X,Z,G,V,U,R,F;return z=new D({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>)`}}),R=new D({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(){c=i("p"),v=s("Per esempio, "),u=i("code"),g=s("DistilBertForSequenceClassification"),b=s(" \xE8 un modello DistilBERT base con una testa di classificazione per sequenze. La sequenza di classificazione head \xE8 uno strato lineare sopra gli output ragruppati."),$=m(),E(z.$$.fragment),C=m(),y=i("p"),X=s("Riutilizza facilmente questo checkpoint per un\u2019altra attivit\xE0 passando ad un model head differente. Per un attivit\xE0 di risposta alle domande, utilizzerai il model head "),Z=i("code"),G=s("DistilBertForQuestionAnswering"),V=s(". La head per compiti di question answering \xE8 simile alla classificazione di sequenza head tranne per il fatto che \xE8 uno strato lineare sopra l\u2019output degli stati nascosti (hidden states in inglese)"),U=m(),E(R.$$.fragment)},l(h){c=o(h,"P",{});var J=r(c);v=l(J,"Per esempio, "),u=o(J,"CODE",{});var Q=r(u);g=l(Q,"DistilBertForSequenceClassification"),Q.forEach(a),b=l(J," \xE8 un modello DistilBERT base con una testa di classificazione per sequenze. La sequenza di classificazione head \xE8 uno strato lineare sopra gli output ragruppati."),J.forEach(a),$=f(h),j(z.$$.fragment,h),C=f(h),y=o(h,"P",{});var W=r(y);X=l(W,"Riutilizza facilmente questo checkpoint per un\u2019altra attivit\xE0 passando ad un model head differente. Per un attivit\xE0 di risposta alle domande, utilizzerai il model head "),Z=o(W,"CODE",{});var Y=r(Z);G=l(Y,"DistilBertForQuestionAnswering"),Y.forEach(a),V=l(W,". La head per compiti di question answering \xE8 simile alla classificazione di sequenza head tranne per il fatto che \xE8 uno strato lineare sopra l\u2019output degli stati nascosti (hidden states in inglese)"),W.forEach(a),U=f(h),j(R.$$.fragment,h)},m(h,J){p(h,c,J),t(c,v),t(c,u),t(u,g),t(c,b),p(h,$,J),k(z,h,J),p(h,C,J),p(h,y,J),t(y,X),t(y,Z),t(Z,G),t(y,V),p(h,U,J),k(R,h,J),F=!0},p:Ys,i(h){F||(q(z.$$.fragment,h),q(R.$$.fragment,h),F=!0)},o(h){w(z.$$.fragment,h),w(R.$$.fragment,h),F=!1},d(h){h&&a(c),h&&a($),M(z,h),h&&a(C),h&&a(y),h&&a(U),M(R,h)}}}function Wr(B){let c,v;return c=new Ns({props:{$$slots:{default:[Vr]},$$scope:{ctx:B}}}),{c(){E(c.$$.fragment)},l(u){j(c.$$.fragment,u)},m(u,g){k(c,u,g),v=!0},p(u,g){const b={};g&2&&(b.$$scope={dirty:g,ctx:u}),c.$set(b)},i(u){v||(q(c.$$.fragment,u),v=!0)},o(u){w(c.$$.fragment,u),v=!1},d(u){M(c,u)}}}function Ur(B){let c,v,u,g,b,$,z,C,y,X,Z,G,V,U,R,F;return z=new D({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>)`}}),R=new D({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(){c=i("p"),v=s("Per esempio, "),u=i("code"),g=s("TFDistilBertForSequenceClassification"),b=s(" \xE8 un modello DistilBERT base con classificazione di sequenza head. La classificazione di sequenza head \xE8 uno strato lineare sopra gli output raggruppati."),$=m(),E(z.$$.fragment),C=m(),y=i("p"),X=s("Riutilizza facilmente questo checkpoint per un altra attivit\xE0 passando ad un modello head diverso. Per un attivit\xE0 di risposta alle domande, utilizzerai il model head "),Z=i("code"),G=s("TFDistilBertForQuestionAnswering"),V=s(". Il head di risposta alle domande \xE8 simile alla sequenza di classificazione head tranne per il fatto che \xE8 uno strato lineare sopra l\u2019output degli stati nascosti (hidden states in inglese)"),U=m(),E(R.$$.fragment)},l(h){c=o(h,"P",{});var J=r(c);v=l(J,"Per esempio, "),u=o(J,"CODE",{});var Q=r(u);g=l(Q,"TFDistilBertForSequenceClassification"),Q.forEach(a),b=l(J," \xE8 un modello DistilBERT base con classificazione di sequenza head. La classificazione di sequenza head \xE8 uno strato lineare sopra gli output raggruppati."),J.forEach(a),$=f(h),j(z.$$.fragment,h),C=f(h),y=o(h,"P",{});var W=r(y);X=l(W,"Riutilizza facilmente questo checkpoint per un altra attivit\xE0 passando ad un modello head diverso. Per un attivit\xE0 di risposta alle domande, utilizzerai il model head "),Z=o(W,"CODE",{});var Y=r(Z);G=l(Y,"TFDistilBertForQuestionAnswering"),Y.forEach(a),V=l(W,". Il head di risposta alle domande \xE8 simile alla sequenza di classificazione head tranne per il fatto che \xE8 uno strato lineare sopra l\u2019output degli stati nascosti (hidden states in inglese)"),W.forEach(a),U=f(h),j(R.$$.fragment,h)},m(h,J){p(h,c,J),t(c,v),t(c,u),t(u,g),t(c,b),p(h,$,J),k(z,h,J),p(h,C,J),p(h,y,J),t(y,X),t(y,Z),t(Z,G),t(y,V),p(h,U,J),k(R,h,J),F=!0},p:Ys,i(h){F||(q(z.$$.fragment,h),q(R.$$.fragment,h),F=!0)},o(h){w(z.$$.fragment,h),w(R.$$.fragment,h),F=!1},d(h){h&&a(c),h&&a($),M(z,h),h&&a(C),h&&a(y),h&&a(U),M(R,h)}}}function Fr(B){let c,v;return c=new Ns({props:{$$slots:{default:[Ur]},$$scope:{ctx:B}}}),{c(){E(c.$$.fragment)},l(u){j(c.$$.fragment,u)},m(u,g){k(c,u,g),v=!0},p(u,g){const b={};g&2&&(b.$$scope={dirty:g,ctx:u}),c.$set(b)},i(u){v||(q(c.$$.fragment,u),v=!0)},o(u){w(c.$$.fragment,u),v=!1},d(u){M(c,u)}}}function Gr(B){let c,v,u,g,b;return{c(){c=i("p"),v=s("Non tutti i modelli supportano un tokenizer veloce. Dai un\u2019occhiata a questo "),u=i("a"),g=s("tabella"),b=s(" per verificare se un modello ha il supporto per tokenizer veloce."),this.h()},l($){c=o($,"P",{});var z=r(c);v=l(z,"Non tutti i modelli supportano un tokenizer veloce. Dai un\u2019occhiata a questo "),u=o(z,"A",{href:!0});var C=r(u);g=l(C,"tabella"),C.forEach(a),b=l(z," per verificare se un modello ha il supporto per tokenizer veloce."),z.forEach(a),this.h()},h(){_(u,"href","index#supported-frameworks")},m($,z){p($,c,z),t(c,v),t(c,u),t(u,g),t(c,b)},d($){$&&a(c)}}}function Br(B){let c,v,u,g,b,$,z,C,y,X,Z;return{c(){c=i("p"),v=s("Per l\u2019impostazione predefinita, "),u=i("code"),g=s("AutoTokenizer"),b=s(" prover\xE0 a caricare un tokenizer veloce. Puoi disabilitare questo comportamento impostando "),$=i("code"),z=s("use_fast=False"),C=s(" in "),y=i("code"),X=s("from_pretrained"),Z=s(".")},l(G){c=o(G,"P",{});var V=r(c);v=l(V,"Per l\u2019impostazione predefinita, "),u=o(V,"CODE",{});var U=r(u);g=l(U,"AutoTokenizer"),U.forEach(a),b=l(V," prover\xE0 a caricare un tokenizer veloce. Puoi disabilitare questo comportamento impostando "),$=o(V,"CODE",{});var R=r($);z=l(R,"use_fast=False"),R.forEach(a),C=l(V," in "),y=o(V,"CODE",{});var F=r(y);X=l(F,"from_pretrained"),F.forEach(a),Z=l(V,"."),V.forEach(a)},m(G,V){p(G,c,V),t(c,v),t(c,u),t(u,g),t(c,b),t(c,$),t($,z),t(c,C),t(c,y),t(y,X),t(c,Z)},d(G){G&&a(c)}}}function Xr(B){let c,v,u,g,b;return{c(){c=i("p"),v=s("Se non stai cercando alcuna personalizzazione, usa il metodo "),u=i("code"),g=s("from_pretrained"),b=s(" per caricare i parametri di default dell\u2019estrattore di caratteristiche di un modello.")},l($){c=o($,"P",{});var z=r(c);v=l(z,"Se non stai cercando alcuna personalizzazione, usa il metodo "),u=o(z,"CODE",{});var C=r(u);g=l(C,"from_pretrained"),C.forEach(a),b=l(z," per caricare i parametri di default dell\u2019estrattore di caratteristiche di un modello."),z.forEach(a)},m($,z){p($,c,z),t(c,v),t(c,u),t(u,g),t(c,b)},d($){$&&a(c)}}}function Dr(B){let c,v,u,g,b,$,z,C,y,X,Z,G,V,U,R,F,h,J,Q,W,Y,d,T,P,x,ae,se,kt,Is,xs,qt,As,Ss,wt,Hs,Os,Mt,Ls,ja,le,ue,Zt,Ge,Ks,Ct,el,ka,I,tl,mt,al,sl,Rt,ll,il,Tt,ol,rl,Jt,nl,pl,Vt,cl,ul,qa,L,dl,ft,ml,fl,Wt,hl,gl,wa,Be,Ma,ie,Ut,vl,$l,Ft,zl,bl,Za,de,Xe,_l,Gt,yl,El,jl,De,kl,Bt,ql,wl,Ca,Pe,Ra,me,Ml,Xt,Zl,Cl,Ta,Qe,Ja,fe,Rl,Dt,Tl,Jl,Va,Ye,Wa,he,Vl,Pt,Wl,Ul,Ua,Ne,Fa,ge,Ga,oe,ve,Qt,Ie,Fl,Yt,Gl,Ba,N,Bl,ht,Xl,Dl,Nt,Pl,Ql,It,Yl,Nl,xe,xt,Il,xl,Ae,At,Al,Sl,Se,St,Hl,Ol,Xa,$e,Da,re,ze,Ht,He,Ll,Ot,Kl,Pa,be,ei,Lt,ti,ai,Qa,_e,Ya,ne,ye,Kt,Oe,si,ea,li,Na,Ee,ii,gt,oi,ri,Ia,je,vt,ta,ni,pi,ci,K,aa,ui,di,Le,mi,fi,sa,hi,gi,xa,$t,vi,Aa,ke,Sa,qe,$i,la,zi,bi,Ha,Ke,Oa,we,_i,ia,yi,Ei,La,et,Ka,Me,ji,oa,ki,qi,es,tt,ts,Ze,as,pe,Ce,ra,at,wi,na,Mi,ss,S,Zi,pa,Ci,Ri,ca,Ti,Ji,ua,Vi,Wi,ls,ee,Ui,da,Fi,Gi,zt,Bi,Xi,is,st,os,Re,rs,Te,Di,ma,Pi,Qi,ns,lt,ps,Je,Yi,fa,Ni,Ii,cs,it,us,ce,Ve,ha,ot,xi,ga,Ai,ds,We,Si,va,Hi,Oi,ms,bt,Li,fs,rt,hs,_t,Ki,gs,nt,vs,Ue,eo,$a,to,ao,$s,pt,zs,yt,so,bs;return $=new dt({}),Ge=new dt({}),Be=new D({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>
}`}}),Pe=new D({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>
}`}}),Qe=new D({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>)'}}),Ye=new D({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>)'}}),Ne=new D({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>)'}}),ge=new Qs({props:{$$slots:{default:[Zr]},$$scope:{ctx:B}}}),Ie=new dt({}),$e=new Er({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[Jr],pytorch:[Rr]},$$scope:{ctx:B}}}),He=new dt({}),_e=new Er({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[Fr],pytorch:[Wr]},$$scope:{ctx:B}}}),Oe=new dt({}),ke=new Qs({props:{warning:!0,$$slots:{default:[Gr]},$$scope:{ctx:B}}}),Ke=new D({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>)`}}),et=new D({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>)`}}),tt=new D({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 Qs({props:{$$slots:{default:[Br]},$$scope:{ctx:B}}}),at=new dt({}),st=new D({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>
}`}}),Re=new Qs({props:{$$slots:{default:[Xr]},$$scope:{ctx:B}}}),lt=new D({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>
}`}}),it=new D({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>
}`}}),ot=new dt({}),rt=new D({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>)`}}),nt=new D({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>)`}}),pt=new D({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(){c=i("meta"),v=m(),u=i("h1"),g=i("a"),b=i("span"),E($.$$.fragment),z=m(),C=i("span"),y=s("Crea un'architettura personalizzata"),X=m(),Z=i("p"),G=s("Una "),V=i("a"),U=i("code"),R=s("AutoClass"),F=s(" deduce automaticamente il modello dell\u2019architettura e scarica la configurazione e i pesi pre-allenati. Generalmente, noi consigliamo di usare un "),h=i("code"),J=s("AutoClass"),Q=s(" per produrre un codice indipendente dal checkpoint. Ma gli utenti che desiderano un controllo maggiore su parametri specifici del modello possono creare un modello \u{1F917} Transformers personalizzato da poche classi base. Questo potrebbe essere particolarmente utile per qualunque persona sia interessata nel studiare, allenare o sperimentare con un modello \u{1F917} Transformers. In questa guida, approfondisci la creazione di un modello personalizzato senza "),W=i("code"),Y=s("AutoClass"),d=s(". Impara come:"),T=m(),P=i("ul"),x=i("li"),ae=s("Caricare e personalizzare una configurazione del modello."),se=m(),kt=i("li"),Is=s("Creare un\u2019architettura modello."),xs=m(),qt=i("li"),As=s("Creare un tokenizer lento e veloce per il testo."),Ss=m(),wt=i("li"),Hs=s("Creare un estrattore di caratteristiche per attivit\xE0 riguardanti audio o immagini."),Os=m(),Mt=i("li"),Ls=s("Creare un processore per attivit\xE0 multimodali."),ja=m(),le=i("h2"),ue=i("a"),Zt=i("span"),E(Ge.$$.fragment),Ks=m(),Ct=i("span"),el=s("Configurazione"),ka=m(),I=i("p"),tl=s("Una "),mt=i("a"),al=s("configurazione"),sl=s(" si riferisce agli attributi specifici di un modello. Ogni configurazione del modello ha attributi diversi; per esempio, tutti i modelli npl hanno questi attributi in comune "),Rt=i("code"),ll=s("hidden_size"),il=s(", "),Tt=i("code"),ol=s("num_attention_heads"),rl=s(", "),Jt=i("code"),nl=s("num_hidden_layers"),pl=s(" e "),Vt=i("code"),cl=s("vocab_size"),ul=s(". Questi attributi specificano il numero di attention heads o strati nascosti con cui costruire un modello."),qa=m(),L=i("p"),dl=s("Dai un\u2019occhiata pi\xF9 da vicino a "),ft=i("a"),ml=s("DistilBERT"),fl=s(" accedendo a "),Wt=i("code"),hl=s("DistilBertConfig"),gl=s(" per ispezionare i suoi attributi:"),wa=m(),E(Be.$$.fragment),Ma=m(),ie=i("p"),Ut=i("code"),vl=s("DistilBertConfig"),$l=s(" mostra tutti gli attributi predefiniti usati per costruire una base "),Ft=i("code"),zl=s("DistilBertModel"),bl=s(". Tutti gli attributi sono personalizzabili, creando uno spazio per sperimentare. Per esempio, puoi configurare un modello predefinito per:"),Za=m(),de=i("ul"),Xe=i("li"),_l=s("Provare un funzione di attivazione diversa con il parametro "),Gt=i("code"),yl=s("activation"),El=s("."),jl=m(),De=i("li"),kl=s("Utilizzare tasso di drop out pi\xF9 elevato per le probalit\xE0 di attention con il parametro "),Bt=i("code"),ql=s("attention_dropout"),wl=s("."),Ca=m(),E(Pe.$$.fragment),Ra=m(),me=i("p"),Ml=s("Nella funzione "),Xt=i("code"),Zl=s("from_pretrained()"),Cl=s(" possono essere modificati gli attributi del modello pre-allenato:"),Ta=m(),E(Qe.$$.fragment),Ja=m(),fe=i("p"),Rl=s("Quando la configurazione del modello ti soddisfa, la puoi salvare con "),Dt=i("code"),Tl=s("save_pretrained()"),Jl=s(". Il file della tua configurazione \xE8 memorizzato come file JSON nella save directory specificata:"),Va=m(),E(Ye.$$.fragment),Wa=m(),he=i("p"),Vl=s("Per riutilizzare la configurazione del file, caricalo con "),Pt=i("code"),Wl=s("from_pretrained()"),Ul=s(":"),Ua=m(),E(Ne.$$.fragment),Fa=m(),E(ge.$$.fragment),Ga=m(),oe=i("h2"),ve=i("a"),Qt=i("span"),E(Ie.$$.fragment),Fl=m(),Yt=i("span"),Gl=s("Modello"),Ba=m(),N=i("p"),Bl=s("Il prossimo passo e di creare "),ht=i("a"),Xl=s("modello"),Dl=s(". Il modello - vagamente riferito anche come architettura - definisce cosa ogni strato deve fare e quali operazioni stanno succedendo. Attributi come "),Nt=i("code"),Pl=s("num_hidden_layers"),Ql=s(" provenienti dalla configurazione sono usati per definire l\u2019architettura. Ogni modello condivide la classe base "),It=i("code"),Yl=s("PreTrainedModel"),Nl=s(" e alcuni metodi comuni come il ridimensionamento degli input embeddings e la soppressione delle self-attention heads . Inoltre, tutti i modelli sono la sottoclasse di "),xe=i("a"),xt=i("code"),Il=s("torch.nn.Module"),xl=s(", "),Ae=i("a"),At=i("code"),Al=s("tf.keras.Model"),Sl=s(" o "),Se=i("a"),St=i("code"),Hl=s("flax.linen.Module"),Ol=s(". Cio significa che i modelli sono compatibili con l\u2019uso di ciascun di framework."),Xa=m(),E($e.$$.fragment),Da=m(),re=i("h3"),ze=i("a"),Ht=i("span"),E(He.$$.fragment),Ll=m(),Ot=i("span"),Kl=s("Model head"),Pa=m(),be=i("p"),ei=s("A questo punto, hai un modello DistilBERT base i cui output sono gli "),Lt=i("em"),ti=s("hidden states"),ai=s(" (in italiano stati nascosti). Gli stati nascosti sono passati come input a un model head per produrre l\u2019output finale. \u{1F917} Transformers fornisce un model head diverso per ogni attivit\xE0 fintanto che il modello supporta l\u2019attivit\xE0  (i.e., non puoi usare DistilBERT per un attivit\xE0 sequence-to-sequence come la traduzione)."),Qa=m(),E(_e.$$.fragment),Ya=m(),ne=i("h2"),ye=i("a"),Kt=i("span"),E(Oe.$$.fragment),si=m(),ea=i("span"),li=s("Tokenizer"),Na=m(),Ee=i("p"),ii=s("L\u2019ultima classe base di cui hai bisogno prima di utilizzare un modello per i dati testuali \xE8 un "),gt=i("a"),oi=s("tokenizer"),ri=s(" per convertire il testo grezzo in tensori. Ci sono due tipi di tokenizer che puoi usare con \u{1F917} Transformers:"),Ia=m(),je=i("ul"),vt=i("li"),ta=i("code"),ni=s("PreTrainedTokenizer"),pi=s(": un\u2019implementazione Python di un tokenizer."),ci=m(),K=i("li"),aa=i("code"),ui=s("PreTrainedTokenizerFast"),di=s(": un tokenizer dalla nostra libreria "),Le=i("a"),mi=s("\u{1F917} Tokenizer"),fi=s(" basata su Rust. Questo tipo di tokenizer \xE8 significativamente pi\xF9 veloce, specialmente durante la batch tokenization, grazie alla sua implementazione Rust. Il tokenizer veloce offre anche metodi aggiuntivi come "),sa=i("em"),hi=s("offset mapping"),gi=s(" che associa i token alle loro parole o caratteri originali."),xa=m(),$t=i("p"),vi=s("Entrambi i tokenizer supportano metodi comuni come la codifica e la decodifica, l\u2019aggiunta di nuovi token e la gestione di token speciali."),Aa=m(),E(ke.$$.fragment),Sa=m(),qe=i("p"),$i=s("Se hai addestrato il tuo tokenizer, puoi crearne uno dal tuo file "),la=i("em"),zi=s("vocabolario"),bi=s(":"),Ha=m(),E(Ke.$$.fragment),Oa=m(),we=i("p"),_i=s("\xC8 importante ricordare che il vocabolario di un tokenizer personalizzato sar\xE0 diverso dal vocabolario generato dal tokenizer di un modello preallenato. \xC8 necessario utilizzare il vocabolario di un modello preallenato se si utilizza un modello preallenato, altrimenti gli input non avranno senso. Crea un tokenizer con il vocabolario di un modello preallenato con la classe "),ia=i("code"),yi=s("DistilBertTokenizer"),Ei=s(":"),La=m(),E(et.$$.fragment),Ka=m(),Me=i("p"),ji=s("Crea un tokenizer veloce con la classe "),oa=i("code"),ki=s("DistilBertTokenizerFast"),qi=s(":"),es=m(),E(tt.$$.fragment),ts=m(),E(Ze.$$.fragment),as=m(),pe=i("h2"),Ce=i("a"),ra=i("span"),E(at.$$.fragment),wi=m(),na=i("span"),Mi=s("Estrattore Di Feature"),ss=m(),S=i("p"),Zi=s("Un estrattore di caratteristiche (feature in inglese) elabora input audio o immagini. Eredita dalla classe "),pa=i("code"),Ci=s("FeatureExtractionMixin"),Ri=s(" base e pu\xF2 anche ereditare dalla classe "),ca=i("code"),Ti=s("ImageFeatureExtractionMixin"),Ji=s(" per l\u2019elaborazione delle caratteristiche dell\u2019immagine o dalla classe "),ua=i("code"),Vi=s("SequenceFeatureExtractor"),Wi=s(" per l\u2019elaborazione degli input audio."),ls=m(),ee=i("p"),Ui=s("A seconda che tu stia lavorando a un\u2019attivit\xE0 audio o visiva, crea un estrattore di caratteristiche associato al modello che stai utilizzando. Ad esempio, crea un "),da=i("code"),Fi=s("ViTFeatureExtractor"),Gi=s(" predefinito se stai usando "),zt=i("a"),Bi=s("ViT"),Xi=s(" per la classificazione delle immagini:"),is=m(),E(st.$$.fragment),os=m(),E(Re.$$.fragment),rs=m(),Te=i("p"),Di=s("Modifica uno qualsiasi dei parametri "),ma=i("code"),Pi=s("ViTFeatureExtractor"),Qi=s(" per creare il tuo estrattore di caratteristiche personalizzato:"),ns=m(),E(lt.$$.fragment),ps=m(),Je=i("p"),Yi=s("Per gli input audio, puoi creare un "),fa=i("code"),Ni=s("Wav2Vec2FeatureExtractor"),Ii=s(" e personalizzare i parametri in modo simile:"),cs=m(),E(it.$$.fragment),us=m(),ce=i("h2"),Ve=i("a"),ha=i("span"),E(ot.$$.fragment),xi=m(),ga=i("span"),Ai=s("Processore"),ds=m(),We=i("p"),Si=s("Per modelli che supportano attivit\xE0 multimodali, \u{1F917} Transformers offre una classe di processore che racchiude comodamente un estrattore di caratteristiche e un tokenizer in un unico oggetto. Ad esempio, utilizziamo "),va=i("code"),Hi=s("Wav2Vec2Processor"),Oi=s(" per un\u2019attivit\xE0 di riconoscimento vocale automatico (ASR). ASR trascrive l\u2019audio in testo, quindi avrai bisogno di un estrattore di caratteristiche e di un tokenizer."),ms=m(),bt=i("p"),Li=s("Crea un estrattore di feature per gestire gli input audio:"),fs=m(),E(rt.$$.fragment),hs=m(),_t=i("p"),Ki=s("Crea un tokenizer per gestire gli input di testo:"),gs=m(),E(nt.$$.fragment),vs=m(),Ue=i("p"),eo=s("Combinare l\u2019estrattore di caratteristiche e il tokenizer in "),$a=i("code"),to=s("Wav2Vec2Processor"),ao=s(":"),$s=m(),E(pt.$$.fragment),zs=m(),yt=i("p"),so=s("Con due classi di base - configurazione e modello - e una classe di preelaborazione aggiuntiva (tokenizer, estrattore di caratteristiche o processore), puoi creare qualsiasi modello supportato da \u{1F917} Transformers. Ognuna di queste classi base \xE8 configurabile, consentendoti di utilizzare gli attributi specifici che desideri. \xC8 possibile impostare facilmente un modello per l\u2019addestramento o modificare un modello preallenato esistente per la messa a punto."),this.h()},l(e){const n=wr('[data-svelte="svelte-1phssyn"]',document.head);c=o(n,"META",{name:!0,content:!0}),n.forEach(a),v=f(e),u=o(e,"H1",{class:!0});var ct=r(u);g=o(ct,"A",{id:!0,class:!0,href:!0});var za=r(g);b=o(za,"SPAN",{});var ba=r(b);j($.$$.fragment,ba),ba.forEach(a),za.forEach(a),z=f(ct),C=o(ct,"SPAN",{});var _a=r(C);y=l(_a,"Crea un'architettura personalizzata"),_a.forEach(a),ct.forEach(a),X=f(e),Z=o(e,"P",{});var O=r(Z);G=l(O,"Una "),V=o(O,"A",{href:!0});var ya=r(V);U=o(ya,"CODE",{});var io=r(U);R=l(io,"AutoClass"),io.forEach(a),ya.forEach(a),F=l(O," deduce automaticamente il modello dell\u2019architettura e scarica la configurazione e i pesi pre-allenati. Generalmente, noi consigliamo di usare un "),h=o(O,"CODE",{});var oo=r(h);J=l(oo,"AutoClass"),oo.forEach(a),Q=l(O," per produrre un codice indipendente dal checkpoint. Ma gli utenti che desiderano un controllo maggiore su parametri specifici del modello possono creare un modello \u{1F917} Transformers personalizzato da poche classi base. Questo potrebbe essere particolarmente utile per qualunque persona sia interessata nel studiare, allenare o sperimentare con un modello \u{1F917} Transformers. In questa guida, approfondisci la creazione di un modello personalizzato senza "),W=o(O,"CODE",{});var ro=r(W);Y=l(ro,"AutoClass"),ro.forEach(a),d=l(O,". Impara come:"),O.forEach(a),T=f(e),P=o(e,"UL",{});var te=r(P);x=o(te,"LI",{});var no=r(x);ae=l(no,"Caricare e personalizzare una configurazione del modello."),no.forEach(a),se=f(te),kt=o(te,"LI",{});var po=r(kt);Is=l(po,"Creare un\u2019architettura modello."),po.forEach(a),xs=f(te),qt=o(te,"LI",{});var co=r(qt);As=l(co,"Creare un tokenizer lento e veloce per il testo."),co.forEach(a),Ss=f(te),wt=o(te,"LI",{});var uo=r(wt);Hs=l(uo,"Creare un estrattore di caratteristiche per attivit\xE0 riguardanti audio o immagini."),uo.forEach(a),Os=f(te),Mt=o(te,"LI",{});var mo=r(Mt);Ls=l(mo,"Creare un processore per attivit\xE0 multimodali."),mo.forEach(a),te.forEach(a),ja=f(e),le=o(e,"H2",{class:!0});var _s=r(le);ue=o(_s,"A",{id:!0,class:!0,href:!0});var fo=r(ue);Zt=o(fo,"SPAN",{});var ho=r(Zt);j(Ge.$$.fragment,ho),ho.forEach(a),fo.forEach(a),Ks=f(_s),Ct=o(_s,"SPAN",{});var go=r(Ct);el=l(go,"Configurazione"),go.forEach(a),_s.forEach(a),ka=f(e),I=o(e,"P",{});var H=r(I);tl=l(H,"Una "),mt=o(H,"A",{href:!0});var vo=r(mt);al=l(vo,"configurazione"),vo.forEach(a),sl=l(H," si riferisce agli attributi specifici di un modello. Ogni configurazione del modello ha attributi diversi; per esempio, tutti i modelli npl hanno questi attributi in comune "),Rt=o(H,"CODE",{});var $o=r(Rt);ll=l($o,"hidden_size"),$o.forEach(a),il=l(H,", "),Tt=o(H,"CODE",{});var zo=r(Tt);ol=l(zo,"num_attention_heads"),zo.forEach(a),rl=l(H,", "),Jt=o(H,"CODE",{});var bo=r(Jt);nl=l(bo,"num_hidden_layers"),bo.forEach(a),pl=l(H," e "),Vt=o(H,"CODE",{});var _o=r(Vt);cl=l(_o,"vocab_size"),_o.forEach(a),ul=l(H,". Questi attributi specificano il numero di attention heads o strati nascosti con cui costruire un modello."),H.forEach(a),qa=f(e),L=o(e,"P",{});var Et=r(L);dl=l(Et,"Dai un\u2019occhiata pi\xF9 da vicino a "),ft=o(Et,"A",{href:!0});var yo=r(ft);ml=l(yo,"DistilBERT"),yo.forEach(a),fl=l(Et," accedendo a "),Wt=o(Et,"CODE",{});var Eo=r(Wt);hl=l(Eo,"DistilBertConfig"),Eo.forEach(a),gl=l(Et," per ispezionare i suoi attributi:"),Et.forEach(a),wa=f(e),j(Be.$$.fragment,e),Ma=f(e),ie=o(e,"P",{});var Ea=r(ie);Ut=o(Ea,"CODE",{});var jo=r(Ut);vl=l(jo,"DistilBertConfig"),jo.forEach(a),$l=l(Ea," mostra tutti gli attributi predefiniti usati per costruire una base "),Ft=o(Ea,"CODE",{});var ko=r(Ft);zl=l(ko,"DistilBertModel"),ko.forEach(a),bl=l(Ea,". Tutti gli attributi sono personalizzabili, creando uno spazio per sperimentare. Per esempio, puoi configurare un modello predefinito per:"),Ea.forEach(a),Za=f(e),de=o(e,"UL",{});var ys=r(de);Xe=o(ys,"LI",{});var Es=r(Xe);_l=l(Es,"Provare un funzione di attivazione diversa con il parametro "),Gt=o(Es,"CODE",{});var qo=r(Gt);yl=l(qo,"activation"),qo.forEach(a),El=l(Es,"."),Es.forEach(a),jl=f(ys),De=o(ys,"LI",{});var js=r(De);kl=l(js,"Utilizzare tasso di drop out pi\xF9 elevato per le probalit\xE0 di attention con il parametro "),Bt=o(js,"CODE",{});var wo=r(Bt);ql=l(wo,"attention_dropout"),wo.forEach(a),wl=l(js,"."),js.forEach(a),ys.forEach(a),Ca=f(e),j(Pe.$$.fragment,e),Ra=f(e),me=o(e,"P",{});var ks=r(me);Ml=l(ks,"Nella funzione "),Xt=o(ks,"CODE",{});var Mo=r(Xt);Zl=l(Mo,"from_pretrained()"),Mo.forEach(a),Cl=l(ks," possono essere modificati gli attributi del modello pre-allenato:"),ks.forEach(a),Ta=f(e),j(Qe.$$.fragment,e),Ja=f(e),fe=o(e,"P",{});var qs=r(fe);Rl=l(qs,"Quando la configurazione del modello ti soddisfa, la puoi salvare con "),Dt=o(qs,"CODE",{});var Zo=r(Dt);Tl=l(Zo,"save_pretrained()"),Zo.forEach(a),Jl=l(qs,". Il file della tua configurazione \xE8 memorizzato come file JSON nella save directory specificata:"),qs.forEach(a),Va=f(e),j(Ye.$$.fragment,e),Wa=f(e),he=o(e,"P",{});var ws=r(he);Vl=l(ws,"Per riutilizzare la configurazione del file, caricalo con "),Pt=o(ws,"CODE",{});var Co=r(Pt);Wl=l(Co,"from_pretrained()"),Co.forEach(a),Ul=l(ws,":"),ws.forEach(a),Ua=f(e),j(Ne.$$.fragment,e),Fa=f(e),j(ge.$$.fragment,e),Ga=f(e),oe=o(e,"H2",{class:!0});var Ms=r(oe);ve=o(Ms,"A",{id:!0,class:!0,href:!0});var Ro=r(ve);Qt=o(Ro,"SPAN",{});var To=r(Qt);j(Ie.$$.fragment,To),To.forEach(a),Ro.forEach(a),Fl=f(Ms),Yt=o(Ms,"SPAN",{});var Jo=r(Yt);Gl=l(Jo,"Modello"),Jo.forEach(a),Ms.forEach(a),Ba=f(e),N=o(e,"P",{});var A=r(N);Bl=l(A,"Il prossimo passo e di creare "),ht=o(A,"A",{href:!0});var Vo=r(ht);Xl=l(Vo,"modello"),Vo.forEach(a),Dl=l(A,". Il modello - vagamente riferito anche come architettura - definisce cosa ogni strato deve fare e quali operazioni stanno succedendo. Attributi come "),Nt=o(A,"CODE",{});var Wo=r(Nt);Pl=l(Wo,"num_hidden_layers"),Wo.forEach(a),Ql=l(A," provenienti dalla configurazione sono usati per definire l\u2019architettura. Ogni modello condivide la classe base "),It=o(A,"CODE",{});var Uo=r(It);Yl=l(Uo,"PreTrainedModel"),Uo.forEach(a),Nl=l(A," e alcuni metodi comuni come il ridimensionamento degli input embeddings e la soppressione delle self-attention heads . Inoltre, tutti i modelli sono la sottoclasse di "),xe=o(A,"A",{href:!0,rel:!0});var Fo=r(xe);xt=o(Fo,"CODE",{});var Go=r(xt);Il=l(Go,"torch.nn.Module"),Go.forEach(a),Fo.forEach(a),xl=l(A,", "),Ae=o(A,"A",{href:!0,rel:!0});var Bo=r(Ae);At=o(Bo,"CODE",{});var Xo=r(At);Al=l(Xo,"tf.keras.Model"),Xo.forEach(a),Bo.forEach(a),Sl=l(A," o "),Se=o(A,"A",{href:!0,rel:!0});var Do=r(Se);St=o(Do,"CODE",{});var Po=r(St);Hl=l(Po,"flax.linen.Module"),Po.forEach(a),Do.forEach(a),Ol=l(A,". Cio significa che i modelli sono compatibili con l\u2019uso di ciascun di framework."),A.forEach(a),Xa=f(e),j($e.$$.fragment,e),Da=f(e),re=o(e,"H3",{class:!0});var Zs=r(re);ze=o(Zs,"A",{id:!0,class:!0,href:!0});var Qo=r(ze);Ht=o(Qo,"SPAN",{});var Yo=r(Ht);j(He.$$.fragment,Yo),Yo.forEach(a),Qo.forEach(a),Ll=f(Zs),Ot=o(Zs,"SPAN",{});var No=r(Ot);Kl=l(No,"Model head"),No.forEach(a),Zs.forEach(a),Pa=f(e),be=o(e,"P",{});var Cs=r(be);ei=l(Cs,"A questo punto, hai un modello DistilBERT base i cui output sono gli "),Lt=o(Cs,"EM",{});var Io=r(Lt);ti=l(Io,"hidden states"),Io.forEach(a),ai=l(Cs," (in italiano stati nascosti). Gli stati nascosti sono passati come input a un model head per produrre l\u2019output finale. \u{1F917} Transformers fornisce un model head diverso per ogni attivit\xE0 fintanto che il modello supporta l\u2019attivit\xE0  (i.e., non puoi usare DistilBERT per un attivit\xE0 sequence-to-sequence come la traduzione)."),Cs.forEach(a),Qa=f(e),j(_e.$$.fragment,e),Ya=f(e),ne=o(e,"H2",{class:!0});var Rs=r(ne);ye=o(Rs,"A",{id:!0,class:!0,href:!0});var xo=r(ye);Kt=o(xo,"SPAN",{});var Ao=r(Kt);j(Oe.$$.fragment,Ao),Ao.forEach(a),xo.forEach(a),si=f(Rs),ea=o(Rs,"SPAN",{});var So=r(ea);li=l(So,"Tokenizer"),So.forEach(a),Rs.forEach(a),Na=f(e),Ee=o(e,"P",{});var Ts=r(Ee);ii=l(Ts,"L\u2019ultima classe base di cui hai bisogno prima di utilizzare un modello per i dati testuali \xE8 un "),gt=o(Ts,"A",{href:!0});var Ho=r(gt);oi=l(Ho,"tokenizer"),Ho.forEach(a),ri=l(Ts," per convertire il testo grezzo in tensori. Ci sono due tipi di tokenizer che puoi usare con \u{1F917} Transformers:"),Ts.forEach(a),Ia=f(e),je=o(e,"UL",{});var Js=r(je);vt=o(Js,"LI",{});var lo=r(vt);ta=o(lo,"CODE",{});var Oo=r(ta);ni=l(Oo,"PreTrainedTokenizer"),Oo.forEach(a),pi=l(lo,": un\u2019implementazione Python di un tokenizer."),lo.forEach(a),ci=f(Js),K=o(Js,"LI",{});var ut=r(K);aa=o(ut,"CODE",{});var Lo=r(aa);ui=l(Lo,"PreTrainedTokenizerFast"),Lo.forEach(a),di=l(ut,": un tokenizer dalla nostra libreria "),Le=o(ut,"A",{href:!0,rel:!0});var Ko=r(Le);mi=l(Ko,"\u{1F917} Tokenizer"),Ko.forEach(a),fi=l(ut," basata su Rust. Questo tipo di tokenizer \xE8 significativamente pi\xF9 veloce, specialmente durante la batch tokenization, grazie alla sua implementazione Rust. Il tokenizer veloce offre anche metodi aggiuntivi come "),sa=o(ut,"EM",{});var er=r(sa);hi=l(er,"offset mapping"),er.forEach(a),gi=l(ut," che associa i token alle loro parole o caratteri originali."),ut.forEach(a),Js.forEach(a),xa=f(e),$t=o(e,"P",{});var tr=r($t);vi=l(tr,"Entrambi i tokenizer supportano metodi comuni come la codifica e la decodifica, l\u2019aggiunta di nuovi token e la gestione di token speciali."),tr.forEach(a),Aa=f(e),j(ke.$$.fragment,e),Sa=f(e),qe=o(e,"P",{});var Vs=r(qe);$i=l(Vs,"Se hai addestrato il tuo tokenizer, puoi crearne uno dal tuo file "),la=o(Vs,"EM",{});var ar=r(la);zi=l(ar,"vocabolario"),ar.forEach(a),bi=l(Vs,":"),Vs.forEach(a),Ha=f(e),j(Ke.$$.fragment,e),Oa=f(e),we=o(e,"P",{});var Ws=r(we);_i=l(Ws,"\xC8 importante ricordare che il vocabolario di un tokenizer personalizzato sar\xE0 diverso dal vocabolario generato dal tokenizer di un modello preallenato. \xC8 necessario utilizzare il vocabolario di un modello preallenato se si utilizza un modello preallenato, altrimenti gli input non avranno senso. Crea un tokenizer con il vocabolario di un modello preallenato con la classe "),ia=o(Ws,"CODE",{});var sr=r(ia);yi=l(sr,"DistilBertTokenizer"),sr.forEach(a),Ei=l(Ws,":"),Ws.forEach(a),La=f(e),j(et.$$.fragment,e),Ka=f(e),Me=o(e,"P",{});var Us=r(Me);ji=l(Us,"Crea un tokenizer veloce con la classe "),oa=o(Us,"CODE",{});var lr=r(oa);ki=l(lr,"DistilBertTokenizerFast"),lr.forEach(a),qi=l(Us,":"),Us.forEach(a),es=f(e),j(tt.$$.fragment,e),ts=f(e),j(Ze.$$.fragment,e),as=f(e),pe=o(e,"H2",{class:!0});var Fs=r(pe);Ce=o(Fs,"A",{id:!0,class:!0,href:!0});var ir=r(Ce);ra=o(ir,"SPAN",{});var or=r(ra);j(at.$$.fragment,or),or.forEach(a),ir.forEach(a),wi=f(Fs),na=o(Fs,"SPAN",{});var rr=r(na);Mi=l(rr,"Estrattore Di Feature"),rr.forEach(a),Fs.forEach(a),ss=f(e),S=o(e,"P",{});var Fe=r(S);Zi=l(Fe,"Un estrattore di caratteristiche (feature in inglese) elabora input audio o immagini. Eredita dalla classe "),pa=o(Fe,"CODE",{});var nr=r(pa);Ci=l(nr,"FeatureExtractionMixin"),nr.forEach(a),Ri=l(Fe," base e pu\xF2 anche ereditare dalla classe "),ca=o(Fe,"CODE",{});var pr=r(ca);Ti=l(pr,"ImageFeatureExtractionMixin"),pr.forEach(a),Ji=l(Fe," per l\u2019elaborazione delle caratteristiche dell\u2019immagine o dalla classe "),ua=o(Fe,"CODE",{});var cr=r(ua);Vi=l(cr,"SequenceFeatureExtractor"),cr.forEach(a),Wi=l(Fe," per l\u2019elaborazione degli input audio."),Fe.forEach(a),ls=f(e),ee=o(e,"P",{});var jt=r(ee);Ui=l(jt,"A seconda che tu stia lavorando a un\u2019attivit\xE0 audio o visiva, crea un estrattore di caratteristiche associato al modello che stai utilizzando. Ad esempio, crea un "),da=o(jt,"CODE",{});var ur=r(da);Fi=l(ur,"ViTFeatureExtractor"),ur.forEach(a),Gi=l(jt," predefinito se stai usando "),zt=o(jt,"A",{href:!0});var dr=r(zt);Bi=l(dr,"ViT"),dr.forEach(a),Xi=l(jt," per la classificazione delle immagini:"),jt.forEach(a),is=f(e),j(st.$$.fragment,e),os=f(e),j(Re.$$.fragment,e),rs=f(e),Te=o(e,"P",{});var Gs=r(Te);Di=l(Gs,"Modifica uno qualsiasi dei parametri "),ma=o(Gs,"CODE",{});var mr=r(ma);Pi=l(mr,"ViTFeatureExtractor"),mr.forEach(a),Qi=l(Gs," per creare il tuo estrattore di caratteristiche personalizzato:"),Gs.forEach(a),ns=f(e),j(lt.$$.fragment,e),ps=f(e),Je=o(e,"P",{});var Bs=r(Je);Yi=l(Bs,"Per gli input audio, puoi creare un "),fa=o(Bs,"CODE",{});var fr=r(fa);Ni=l(fr,"Wav2Vec2FeatureExtractor"),fr.forEach(a),Ii=l(Bs," e personalizzare i parametri in modo simile:"),Bs.forEach(a),cs=f(e),j(it.$$.fragment,e),us=f(e),ce=o(e,"H2",{class:!0});var Xs=r(ce);Ve=o(Xs,"A",{id:!0,class:!0,href:!0});var hr=r(Ve);ha=o(hr,"SPAN",{});var gr=r(ha);j(ot.$$.fragment,gr),gr.forEach(a),hr.forEach(a),xi=f(Xs),ga=o(Xs,"SPAN",{});var vr=r(ga);Ai=l(vr,"Processore"),vr.forEach(a),Xs.forEach(a),ds=f(e),We=o(e,"P",{});var Ds=r(We);Si=l(Ds,"Per modelli che supportano attivit\xE0 multimodali, \u{1F917} Transformers offre una classe di processore che racchiude comodamente un estrattore di caratteristiche e un tokenizer in un unico oggetto. Ad esempio, utilizziamo "),va=o(Ds,"CODE",{});var $r=r(va);Hi=l($r,"Wav2Vec2Processor"),$r.forEach(a),Oi=l(Ds," per un\u2019attivit\xE0 di riconoscimento vocale automatico (ASR). ASR trascrive l\u2019audio in testo, quindi avrai bisogno di un estrattore di caratteristiche e di un tokenizer."),Ds.forEach(a),ms=f(e),bt=o(e,"P",{});var zr=r(bt);Li=l(zr,"Crea un estrattore di feature per gestire gli input audio:"),zr.forEach(a),fs=f(e),j(rt.$$.fragment,e),hs=f(e),_t=o(e,"P",{});var br=r(_t);Ki=l(br,"Crea un tokenizer per gestire gli input di testo:"),br.forEach(a),gs=f(e),j(nt.$$.fragment,e),vs=f(e),Ue=o(e,"P",{});var Ps=r(Ue);eo=l(Ps,"Combinare l\u2019estrattore di caratteristiche e il tokenizer in "),$a=o(Ps,"CODE",{});var _r=r($a);to=l(_r,"Wav2Vec2Processor"),_r.forEach(a),ao=l(Ps,":"),Ps.forEach(a),$s=f(e),j(pt.$$.fragment,e),zs=f(e),yt=o(e,"P",{});var yr=r(yt);so=l(yr,"Con due classi di base - configurazione e modello - e una classe di preelaborazione aggiuntiva (tokenizer, estrattore di caratteristiche o processore), puoi creare qualsiasi modello supportato da \u{1F917} Transformers. Ognuna di queste classi base \xE8 configurabile, consentendoti di utilizzare gli attributi specifici che desideri. \xC8 possibile impostare facilmente un modello per l\u2019addestramento o modificare un modello preallenato esistente per la messa a punto."),yr.forEach(a),this.h()},h(){_(c,"name","hf:doc:metadata"),_(c,"content",JSON.stringify(Pr)),_(g,"id","crea-unarchitettura-personalizzata"),_(g,"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"),_(g,"href","#crea-unarchitettura-personalizzata"),_(u,"class","relative group"),_(V,"href","model_doc/auto"),_(ue,"id","configurazione"),_(ue,"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"),_(ue,"href","#configurazione"),_(le,"class","relative group"),_(mt,"href","main_classes/configuration"),_(ft,"href","model_doc/distilbert"),_(ve,"id","modello"),_(ve,"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"),_(ve,"href","#modello"),_(oe,"class","relative group"),_(ht,"href","main_classes/models"),_(xe,"href","https://pytorch.org/docs/stable/generated/torch.nn.Module.html"),_(xe,"rel","nofollow"),_(Ae,"href","https://www.tensorflow.org/api_docs/python/tf/keras/Model"),_(Ae,"rel","nofollow"),_(Se,"href","https://flax.readthedocs.io/en/latest/flax.linen.html#module"),_(Se,"rel","nofollow"),_(ze,"id","model-head"),_(ze,"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"),_(ze,"href","#model-head"),_(re,"class","relative group"),_(ye,"id","tokenizer"),_(ye,"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"),_(ye,"href","#tokenizer"),_(ne,"class","relative group"),_(gt,"href","main_classes/tokenizer"),_(Le,"href","https://huggingface.co/docs/tokenizers/python/latest/"),_(Le,"rel","nofollow"),_(Ce,"id","estrattore-di-feature"),_(Ce,"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"),_(Ce,"href","#estrattore-di-feature"),_(pe,"class","relative group"),_(zt,"href","model_doc/vit"),_(Ve,"id","processore"),_(Ve,"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"),_(Ve,"href","#processore"),_(ce,"class","relative group")},m(e,n){t(document.head,c),p(e,v,n),p(e,u,n),t(u,g),t(g,b),k($,b,null),t(u,z),t(u,C),t(C,y),p(e,X,n),p(e,Z,n),t(Z,G),t(Z,V),t(V,U),t(U,R),t(Z,F),t(Z,h),t(h,J),t(Z,Q),t(Z,W),t(W,Y),t(Z,d),p(e,T,n),p(e,P,n),t(P,x),t(x,ae),t(P,se),t(P,kt),t(kt,Is),t(P,xs),t(P,qt),t(qt,As),t(P,Ss),t(P,wt),t(wt,Hs),t(P,Os),t(P,Mt),t(Mt,Ls),p(e,ja,n),p(e,le,n),t(le,ue),t(ue,Zt),k(Ge,Zt,null),t(le,Ks),t(le,Ct),t(Ct,el),p(e,ka,n),p(e,I,n),t(I,tl),t(I,mt),t(mt,al),t(I,sl),t(I,Rt),t(Rt,ll),t(I,il),t(I,Tt),t(Tt,ol),t(I,rl),t(I,Jt),t(Jt,nl),t(I,pl),t(I,Vt),t(Vt,cl),t(I,ul),p(e,qa,n),p(e,L,n),t(L,dl),t(L,ft),t(ft,ml),t(L,fl),t(L,Wt),t(Wt,hl),t(L,gl),p(e,wa,n),k(Be,e,n),p(e,Ma,n),p(e,ie,n),t(ie,Ut),t(Ut,vl),t(ie,$l),t(ie,Ft),t(Ft,zl),t(ie,bl),p(e,Za,n),p(e,de,n),t(de,Xe),t(Xe,_l),t(Xe,Gt),t(Gt,yl),t(Xe,El),t(de,jl),t(de,De),t(De,kl),t(De,Bt),t(Bt,ql),t(De,wl),p(e,Ca,n),k(Pe,e,n),p(e,Ra,n),p(e,me,n),t(me,Ml),t(me,Xt),t(Xt,Zl),t(me,Cl),p(e,Ta,n),k(Qe,e,n),p(e,Ja,n),p(e,fe,n),t(fe,Rl),t(fe,Dt),t(Dt,Tl),t(fe,Jl),p(e,Va,n),k(Ye,e,n),p(e,Wa,n),p(e,he,n),t(he,Vl),t(he,Pt),t(Pt,Wl),t(he,Ul),p(e,Ua,n),k(Ne,e,n),p(e,Fa,n),k(ge,e,n),p(e,Ga,n),p(e,oe,n),t(oe,ve),t(ve,Qt),k(Ie,Qt,null),t(oe,Fl),t(oe,Yt),t(Yt,Gl),p(e,Ba,n),p(e,N,n),t(N,Bl),t(N,ht),t(ht,Xl),t(N,Dl),t(N,Nt),t(Nt,Pl),t(N,Ql),t(N,It),t(It,Yl),t(N,Nl),t(N,xe),t(xe,xt),t(xt,Il),t(N,xl),t(N,Ae),t(Ae,At),t(At,Al),t(N,Sl),t(N,Se),t(Se,St),t(St,Hl),t(N,Ol),p(e,Xa,n),k($e,e,n),p(e,Da,n),p(e,re,n),t(re,ze),t(ze,Ht),k(He,Ht,null),t(re,Ll),t(re,Ot),t(Ot,Kl),p(e,Pa,n),p(e,be,n),t(be,ei),t(be,Lt),t(Lt,ti),t(be,ai),p(e,Qa,n),k(_e,e,n),p(e,Ya,n),p(e,ne,n),t(ne,ye),t(ye,Kt),k(Oe,Kt,null),t(ne,si),t(ne,ea),t(ea,li),p(e,Na,n),p(e,Ee,n),t(Ee,ii),t(Ee,gt),t(gt,oi),t(Ee,ri),p(e,Ia,n),p(e,je,n),t(je,vt),t(vt,ta),t(ta,ni),t(vt,pi),t(je,ci),t(je,K),t(K,aa),t(aa,ui),t(K,di),t(K,Le),t(Le,mi),t(K,fi),t(K,sa),t(sa,hi),t(K,gi),p(e,xa,n),p(e,$t,n),t($t,vi),p(e,Aa,n),k(ke,e,n),p(e,Sa,n),p(e,qe,n),t(qe,$i),t(qe,la),t(la,zi),t(qe,bi),p(e,Ha,n),k(Ke,e,n),p(e,Oa,n),p(e,we,n),t(we,_i),t(we,ia),t(ia,yi),t(we,Ei),p(e,La,n),k(et,e,n),p(e,Ka,n),p(e,Me,n),t(Me,ji),t(Me,oa),t(oa,ki),t(Me,qi),p(e,es,n),k(tt,e,n),p(e,ts,n),k(Ze,e,n),p(e,as,n),p(e,pe,n),t(pe,Ce),t(Ce,ra),k(at,ra,null),t(pe,wi),t(pe,na),t(na,Mi),p(e,ss,n),p(e,S,n),t(S,Zi),t(S,pa),t(pa,Ci),t(S,Ri),t(S,ca),t(ca,Ti),t(S,Ji),t(S,ua),t(ua,Vi),t(S,Wi),p(e,ls,n),p(e,ee,n),t(ee,Ui),t(ee,da),t(da,Fi),t(ee,Gi),t(ee,zt),t(zt,Bi),t(ee,Xi),p(e,is,n),k(st,e,n),p(e,os,n),k(Re,e,n),p(e,rs,n),p(e,Te,n),t(Te,Di),t(Te,ma),t(ma,Pi),t(Te,Qi),p(e,ns,n),k(lt,e,n),p(e,ps,n),p(e,Je,n),t(Je,Yi),t(Je,fa),t(fa,Ni),t(Je,Ii),p(e,cs,n),k(it,e,n),p(e,us,n),p(e,ce,n),t(ce,Ve),t(Ve,ha),k(ot,ha,null),t(ce,xi),t(ce,ga),t(ga,Ai),p(e,ds,n),p(e,We,n),t(We,Si),t(We,va),t(va,Hi),t(We,Oi),p(e,ms,n),p(e,bt,n),t(bt,Li),p(e,fs,n),k(rt,e,n),p(e,hs,n),p(e,_t,n),t(_t,Ki),p(e,gs,n),k(nt,e,n),p(e,vs,n),p(e,Ue,n),t(Ue,eo),t(Ue,$a),t($a,to),t(Ue,ao),p(e,$s,n),k(pt,e,n),p(e,zs,n),p(e,yt,n),t(yt,so),bs=!0},p(e,[n]){const ct={};n&2&&(ct.$$scope={dirty:n,ctx:e}),ge.$set(ct);const za={};n&2&&(za.$$scope={dirty:n,ctx:e}),$e.$set(za);const ba={};n&2&&(ba.$$scope={dirty:n,ctx:e}),_e.$set(ba);const _a={};n&2&&(_a.$$scope={dirty:n,ctx:e}),ke.$set(_a);const O={};n&2&&(O.$$scope={dirty:n,ctx:e}),Ze.$set(O);const ya={};n&2&&(ya.$$scope={dirty:n,ctx:e}),Re.$set(ya)},i(e){bs||(q($.$$.fragment,e),q(Ge.$$.fragment,e),q(Be.$$.fragment,e),q(Pe.$$.fragment,e),q(Qe.$$.fragment,e),q(Ye.$$.fragment,e),q(Ne.$$.fragment,e),q(ge.$$.fragment,e),q(Ie.$$.fragment,e),q($e.$$.fragment,e),q(He.$$.fragment,e),q(_e.$$.fragment,e),q(Oe.$$.fragment,e),q(ke.$$.fragment,e),q(Ke.$$.fragment,e),q(et.$$.fragment,e),q(tt.$$.fragment,e),q(Ze.$$.fragment,e),q(at.$$.fragment,e),q(st.$$.fragment,e),q(Re.$$.fragment,e),q(lt.$$.fragment,e),q(it.$$.fragment,e),q(ot.$$.fragment,e),q(rt.$$.fragment,e),q(nt.$$.fragment,e),q(pt.$$.fragment,e),bs=!0)},o(e){w($.$$.fragment,e),w(Ge.$$.fragment,e),w(Be.$$.fragment,e),w(Pe.$$.fragment,e),w(Qe.$$.fragment,e),w(Ye.$$.fragment,e),w(Ne.$$.fragment,e),w(ge.$$.fragment,e),w(Ie.$$.fragment,e),w($e.$$.fragment,e),w(He.$$.fragment,e),w(_e.$$.fragment,e),w(Oe.$$.fragment,e),w(ke.$$.fragment,e),w(Ke.$$.fragment,e),w(et.$$.fragment,e),w(tt.$$.fragment,e),w(Ze.$$.fragment,e),w(at.$$.fragment,e),w(st.$$.fragment,e),w(Re.$$.fragment,e),w(lt.$$.fragment,e),w(it.$$.fragment,e),w(ot.$$.fragment,e),w(rt.$$.fragment,e),w(nt.$$.fragment,e),w(pt.$$.fragment,e),bs=!1},d(e){a(c),e&&a(v),e&&a(u),M($),e&&a(X),e&&a(Z),e&&a(T),e&&a(P),e&&a(ja),e&&a(le),M(Ge),e&&a(ka),e&&a(I),e&&a(qa),e&&a(L),e&&a(wa),M(Be,e),e&&a(Ma),e&&a(ie),e&&a(Za),e&&a(de),e&&a(Ca),M(Pe,e),e&&a(Ra),e&&a(me),e&&a(Ta),M(Qe,e),e&&a(Ja),e&&a(fe),e&&a(Va),M(Ye,e),e&&a(Wa),e&&a(he),e&&a(Ua),M(Ne,e),e&&a(Fa),M(ge,e),e&&a(Ga),e&&a(oe),M(Ie),e&&a(Ba),e&&a(N),e&&a(Xa),M($e,e),e&&a(Da),e&&a(re),M(He),e&&a(Pa),e&&a(be),e&&a(Qa),M(_e,e),e&&a(Ya),e&&a(ne),M(Oe),e&&a(Na),e&&a(Ee),e&&a(Ia),e&&a(je),e&&a(xa),e&&a($t),e&&a(Aa),M(ke,e),e&&a(Sa),e&&a(qe),e&&a(Ha),M(Ke,e),e&&a(Oa),e&&a(we),e&&a(La),M(et,e),e&&a(Ka),e&&a(Me),e&&a(es),M(tt,e),e&&a(ts),M(Ze,e),e&&a(as),e&&a(pe),M(at),e&&a(ss),e&&a(S),e&&a(ls),e&&a(ee),e&&a(is),M(st,e),e&&a(os),M(Re,e),e&&a(rs),e&&a(Te),e&&a(ns),M(lt,e),e&&a(ps),e&&a(Je),e&&a(cs),M(it,e),e&&a(us),e&&a(ce),M(ot),e&&a(ds),e&&a(We),e&&a(ms),e&&a(bt),e&&a(fs),M(rt,e),e&&a(hs),e&&a(_t),e&&a(gs),M(nt,e),e&&a(vs),e&&a(Ue),e&&a($s),M(pt,e),e&&a(zs),e&&a(yt)}}}const Pr={local:"crea-unarchitettura-personalizzata",sections:[{local:"configurazione",title:"Configurazione"},{local:"modello",sections:[{local:"model-head",title:"Model head"}],title:"Modello"},{local:"tokenizer",title:"Tokenizer"},{local:"estrattore-di-feature",title:"Estrattore Di Feature"},{local:"processore",title:"Processore"}],title:"Crea un'architettura personalizzata "};function Qr(B){return Mr(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Hr extends jr{constructor(c){super();kr(this,c,Qr,Dr,qr,{})}}export{Hr as default,Pr as metadata};
